Skip to content

Fix 44 verified defects (3 architectural) and reduce bloat backlog 104 → 1#544

Merged
Krilliac merged 11 commits into
Workingfrom
claude/subagents-full-force-fr2t5q
Jul 19, 2026
Merged

Fix 44 verified defects (3 architectural) and reduce bloat backlog 104 → 1#544
Krilliac merged 11 commits into
Workingfrom
claude/subagents-full-force-fr2t5q

Conversation

@Krilliac

Copy link
Copy Markdown
Owner

Summary

Multi-agent hardening session: every finding was independently confirmed by two adversarial verifiers before being fixed, and every commit was gated on a clean linux-gcc-release build plus the full test suite. The final waves add MinGW cross-build verification for the Windows-only code paths.

Defect fixes (44 total)

41 local defects across 31 files — highlights:

  • Logger.cpp: snprintf return misuse could overflow a 4 KB stack buffer on long messages
  • NetworkReplication.cpp: recursive mutex lock deadlocked the server on every client connect
  • MMO persistence: prepared statements used %N placeholders the database layer never substitutes — parameters silently dropped
  • Linux main loop never called ModuleManager::FixedUpdateAll; FixedTimestepPhysicsSystem never stepped physics
  • TerrainSystem regenerated and discarded clipmap meshes every frame
  • Weapon switching stuck forever in Switching; burst mode fired single shots; tween sequences played members in parallel
  • Four VisualScriptCompiler codegen bugs (incl. std::sort comparator UB); AsyncDatabase KV store corrupted multi-line values; save/load string-length asymmetry; plus races, wedged network channels, never-resolving futures, and unwired update loops

3 architectural defects, each with regression tests:

  • Per-peer reliable networking: dedup/ACK/ordered/retransmit state was server-wide, silently losing reliable messages with ≥2 clients; now keyed per peer with unicast ACKs (wire format unchanged) — TestReliableChannel.cpp
  • ECS phase pipeline wired into production: PhaseSystemManager is now created and ticked by the gameplay lifecycle (it previously ran only in tests); dead StageBasedExecutor deleted — Test_lifecycle_ecs_phase_wiring.cpp
  • Delta-snapshot ACKs: new MessageType::DeltaAck with its own sequence space (transport ACKs would falsely advance baselines); pendingDeltas bounded per connection — TestNetworkReplicationIntegration.cpp

Bloat campaign: 104 → 1 over-threshold files

103 files split into coherent sibling TUs and umbrella headers across 6 waves, all moves byte-identical. The 18 Windows-only files were verified via the repo's MinGW cross-compilation path — each split TU passes x86_64-w64-mingw32-g++ -fsyntax-only with the real build flags, and the full linux-mingw-release cross-build links green. The sole remaining violation is the FROZEN-CONTRACT TFTypes.h (301/300 lines), deliberately left.

Also: SparkInstaller now links d3dcompiler explicitly (imgui_impl_dx11 relies on MSVC #pragma comment auto-link, which MinGW ignores), Doxygen coverage at 100%, wiki/skills updated to reflect the fixed defects and record the split-campaign gotchas.

Verification

  • linux-gcc-release: clean build, all 6,200+ tests pass (including the new regression tests)
  • linux-mingw-release: full cross-build green (compiles all _WIN32/D3D11 paths)
  • clang-format clean; tools/validate-all.sh 10/11 (the bloat check counts only the frozen-contract header)
  • Docs/wiki auto-generated content refreshed via docs/update-all-docs.sh

🤖 Generated with Claude Code

https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h


Generated by Claude Code

claude added 10 commits July 18, 2026 11:49
…e counts

- Add @file/@brief to ReflectedSceneSerializer.h (Doxygen coverage now 100%)
- Reword EngineRuntime.h historical comment so the deprecated-globals
  architectural check no longer trips on a doc string
- Refresh auto-generated panel/test counts in CLAUDE.md and .github prompts

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…eep)

Fixes confirmed by a find -> adversarial-verify -> fix agent pipeline
(48 findings, each independently refuted-or-retraced by two verifiers;
41 confirmed, 3 deferred as architectural, 4 refuted). Highlights:

Critical:
- Logger: FormatLogMessage snprintf return misuse could overflow the
  4 KB stack buffer on long messages
- NetworkReplication: recursive m_replicationMutex lock deadlocked the
  server on every client connect
- MMO persistence: prepared statements used %N placeholders that
  AsyncDatabase never substitutes — queries silently dropped parameters

High:
- OpenGL RHI: context-reuse init skipped command list/caps/transient
  allocator; WrapNativeTexture deleted externally-owned GL textures;
  SetRenderTargets ignored depth-stencil and MRT targets 1..N
- Linux main loop never called ModuleManager::FixedUpdateAll despite
  advancing the fixed-timestep accumulator
- FixedTimestepPhysicsSystem never actually stepped physics
- TerrainSystem regenerated and discarded clipmap meshes every frame
- WeaponManager: switching state machine re-entered equip forever;
  burst mode fired single shots
- TweenSystem: sequences played all members in parallel
- VisualScriptCompiler: std::sort comparator UB, duplicate Update()
  emission, cross-event action leakage, double-emitted branch chains
- AsyncDatabase KV store corrupted multi-line values on reload and
  never unquoted SQL-quoted strings
- Delta replication packets used a wire format receivers cannot parse
- UILayoutExtensions parsed widget geometry from nested child blocks

Medium: SimpleConsole help race, GPU-timer null query crash, profiler
min-time floor, ReactiveSystem destroyed-entity notifications, Camera2D
follow crash + shake accumulation, DedicatedServer stop race,
JobSystem::WaitForAll early return, RenderCommandRing uint32 wrap,
ordered-channel wedge on reorder-buffer overflow, save/load string
length asymmetry, AngelScript dangling module after failed recompile,
SpriteNode dirty tracking, localization re-substitution + fallback race,
never-resolving AsyncQuery futures, RagdollSystem unreachable init,
EventResponseSystem never pumped, VulkanSwapChain stale handles.

Also: document three double-confirmed but architectural defects
(per-client reliable sequence state, unregistered core ECS phase
systems, delta-ack wiring) in wiki/advanced/Codebase-Observations.md
instead of auto-fixing.

Verified: linux-gcc-release build clean, all 6193 tests pass,
clang-format clean, validate-all 10/11 (bloat check pre-existing).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…plit 12 oversized files

Architectural fixes (both previously double-confirmed open defects):

- ECS phase pipeline wired into production: GameplayLifecycleShared now
  creates the PhaseSystemManager via EngineSetup::CreatePhaseSystemManager
  during gameplay init and pumps UpdateAll each frame in the documented
  Physics->Animation->AI->Audio->Lifecycle->Render order. Removed the
  ad-hoc terrain tick (now runs once in PreRender) and the dead
  StageBasedExecutor (empty tick, zero registrants). New regression test
  Tests/harden/Test_lifecycle_ecs_phase_wiring.cpp drives the production
  init path and fails if phase systems are unwired again.

- Reliable networking state is now per-peer: dedup windows, ordered
  reorder buffers, outgoing sequence counters, and unacked/retransmit
  maps are keyed by ClientID (server) or an implicit server peer
  (client). ACKs are unicast per peer covering only that peer's
  sequences; retransmissions unicast to the owning peer; peer state is
  torn down on kick/disconnect/timeout. Wire format and public API
  unchanged; single-peer behavior identical. Three new loopback
  regression tests in TestReliableChannel.cpp (two clients' overlapping
  sequence spaces, per-peer ordered independence, ACK isolation), all
  verified failing on pre-fix code.

Bloat reduction (12 files split, zero behavior change, 104 -> 92
over-threshold files): DecorLayoutEditorPanel, RegionMapEditorPanel,
InspectorComponentRenderers_Reflected, BasicMaterialEditorPanel,
BuildPipeline, GraphicsEngineLinux, ShaderCompilationLinux,
AssetTypesLinux, ParticleSystemLinux, PhysicsSpatialQueries,
CoreComponentSerializers, SparkEngineCamera — each into coherent
sibling .cpp units plus small internal headers; moved code
byte-identical; new files picked up by the recursive source glob.

Verified: linux-gcc-release clean build, all tests pass (including the
new regression tests), clang-format clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…ility

The architecture-contract, debugging-playbook, and job-system-threading
skills plus Codebase-Observations still described the ECS phase pipeline
as unwired and StageBasedExecutor as a live dead-tick; both changed in
the 2026-07-18 architectural fixes. Also marks the per-peer reliability
refactor as landed and delta-acks as in progress.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…ders

Delta-snapshot acknowledgements (last of the three architectural defects
from the 2026-07-18 sweep): new MessageType::DeltaAck with its own
sequence space distinct from transport ACKs (which would falsely advance
baselines). Clients echo the delta sequence of applied Unreliable
EntityStateUpdate packets; the server routes the trusted senderID to
DeltaSnapshotManager::AcknowledgeSequence (cumulative, stale acks
ignored). pendingDeltas bounded at 256 per connection with oldest-first
pruning so silent clients cannot grow memory unbounded. PacketValidator
schema added. Regression tests in TestNetworkReplicationIntegration.cpp
(ack releases pending + advances baseline, stale ack ignored, silent
client capped, late ack drains).

Bloat reduction (17 targets split, zero behavior change, 92 -> 74
over-threshold files): SparkEngineLinux (5 TUs + internal header),
SeamlessAreaManager (.cpp+.h), PlayControlPanel, TextureSystemLinux,
GraphicsDeviceResourcesLinux, AssetPipelineLinux, EditorPanelFactory,
InstanceManager, BenchmarkFramework, LightingSystemLinux, ModSystem,
InverseKinematics, SceneImportPanel, and umbrella-pattern header
reductions for Hash.h, Mesh.h, VisualScriptCompiler.h, AIBudgetLimiter.h.
Moved code byte-identical; new files picked up by the recursive glob.

Verified: linux-gcc-release clean build, all tests pass, clang-format
clean, docs refreshed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
Bloat wave 3 (74 -> 60 over-threshold files, zero behavior change):
TFBotSystem (6 TUs + internal header), TFServerSim (5 TUs + constants
header), TFVehicleSystem (5 TUs + header), TFOutfitSystem (5 TUs +
header), TFWorldSetup (5 TUs), TFTravelSystem (5 TUs + header),
TFCommands, TFSocialSystem, TFGrenadeSystem, TFRegionDecor,
TFDataTables, TFSquadSystem, TFAbilitySystem, TFDeployableSystem.

Moved code byte-identical; shared file-local helpers hoisted once into
per-system internal headers under distinct Detail namespaces;
ENABLE_NETWORKING / SPARK_HAS_IMGUI guards replicated per TU; recursive
source glob picks up new files without CMake edits.

Verified: linux-gcc-release clean build, all tests pass, clang-format
clean on all touched files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…ager)

Bloat wave 4 (60 -> 44 over-threshold files, zero behavior change):
TFRegionSystem, TFMapScreen, TFProgressionSystem, TFWeaponServer,
TFViewModel, TFHUD, TFAlertSystem, TFMedalSystem, TFClientNetHandlers,
TFSpectator, TFLoginFlow, TFWorldCollision, TFSpawnScreen, TFTutorial,
TFVehicleNet, and Graphics/HybridRT/HybridRTManager — each into coherent
sibling TUs with shared file-local helpers hoisted once into per-system
internal headers (distinct Detail namespaces), guards replicated per TU.

Verified: linux-gcc-release clean build, all tests pass, clang-format
clean, docs refreshed. Remaining 44 violations are predominantly
Windows-only files (*Windows.cpp, D3D backends) not compile-verifiable
in this environment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
…r threshold

Bloat wave 5 (44 -> 19 over-threshold files, zero behavior change):
- .cpp splits: MMOFPS Main, TFWeaponSystem, TFClientNet, TFPingSystem,
  TFPingUI, Racing Main, TFHUDCombat, TFLanDiscovery, TFOutfitStore,
  TFDayNight, TFAudioAmbience, TFSquadHUD, TFVehicleClient,
  TFPlayerSystem, TFWeatherFx — one-two coherent sibling TUs each.
- Header reductions (umbrella pattern, includers unchanged):
  TFVehicleSystem.h, TFNetProtocol.h, TFOutfitSystem.h,
  TFGrenadeSystem.h, TFProgressionSystem.h, AreaServer.h,
  TFAbilitySystem.h, TFSquadSystem.h, TFBotSystem.h, TFTravelSystem.h.
- Tests/CMakeLists.txt: add TFOutfitStoreDisk.cpp to the explicit
  SparkTests source list (it links module .cpps by path, so a split
  there needs the new TU listed; documented in the wiki).
- Wiki: delta-acks marked fixed; bloat campaign results recorded —
  remaining 19 violations are 18 Windows-only files (need an MSVC/MinGW
  session to split safely) plus the FROZEN-CONTRACT TFTypes.h at 301
  lines, deliberately left.

Verified: linux-gcc-release clean build, all tests pass, clang-format
clean, full docs regenerated, validate-all 10/11 (bloat only).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
Final bloat wave (19 -> 1 over-threshold files): the Windows-only files
previously deferred as unverifiable are now split, verified with the
repo's MinGW cross-compilation path (linux-mingw-release preset) — every
split TU passes x86_64-w64-mingw32-g++ -fsyntax-only with the real build
flags and the full cross-build links green.

- Graphics: GraphicsDeviceResourcesWindows (5 TUs), GraphicsEngineWindows
  (6 TUs mirroring the Linux twin's split), PostProcessingPipelineWindows
  (passes TU + 4 shader-source headers), LightingSystemInternalWindows
  (4 TUs), LightingSystemWindows, TextureSystemWindows,
  ShaderCompilationWindows, ParticleSystemWindows,
  GraphicsStateAndSettingsWindows, GraphicsRenderPipelinesWindows,
  GraphicsConsoleOpsWindows, UpscalingSystemWindows, MeshWindows,
  AssetTypesWindows, RenderTargetWindows, ShaderWindows
- Core: SparkEngineWindows (5 TUs + internal header; new parts added to
  SPARK_ENGINE_ENTRY_POINTS since exe-only entry files are not globbed)
- Utils: ProcessWin32
- SparkInstaller: link d3dcompiler explicitly — imgui_impl_dx11 calls
  D3DCompile via MSVC #pragma comment auto-link, which MinGW ignores
- Wiki: bloat campaign notes updated (104 -> 1; DirectXMath staging and
  entry-point/explicit-list gotchas recorded)

The sole remaining over-threshold file is the FROZEN-CONTRACT TFTypes.h
(301 lines), deliberately left.

Verified: linux-mingw-release full cross-build green, linux-gcc-release
build green, all tests pass, clang-format clean, docs refreshed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
… scan

The new SPARK_ENGINE_ENTRY_POINTS comment mentioned a dependency-gate
token, which check-thirdparty-manifest-sync.sh treats as dependency
wiring and demands a lock bump for. No dependency changed — reword the
comment, mirroring the EngineRuntime.h doc-comment precedent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 03b9edda04

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

deltaAck.channel = ChannelType::Unreliable;
deltaAck.senderID = localID;
NetBuffer ackBuf;
ackBuf.WriteUint32(msg.sequence);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Don't send cumulative ACKs for unreliable deltas

When an unreliable EntityStateUpdate with sequence N arrives, this echoes N to DeltaSnapshotManager::AcknowledgeSequence, which erases all pending deltas <= N. On lossy or out-of-order UDP, receiving N does not mean N-1 arrived; for example, if seq1 carried a health change and is dropped while seq2 carries ammo and is ACKed, the server discards seq1 and that health change is never resent. Use per-packet ACKs or move this delta stream to a reliable/ordered channel before treating the ACK as cumulative.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failure scenario can't occur with this design: BuildDeltaPacket diffs the entity's current fields against ackedEntityFields — the last-acked baseline — not against the last-sent packet. If seq1 (health) is dropped, the health field still differs from the acked baseline when seq2 is built, so seq2 carries health and ammo. Acking seq2 merges its own sentFields (which include health) into the baseline, so nothing is lost; erasing pending records <= N only discards bookkeeping for packets whose changes are superseded by the acked one. Out-of-order acks are also safe: a late ack for an already-erased sequence hits the pendingDeltas.find(sequence) early-return and can't regress the baseline, and lastAckedSequence only moves forward.

Per-field baselines (not per-packet) are exactly what makes lost unreliable deltas self-healing here — the next delta automatically re-includes anything not yet acked.


Generated by Claude Code

Comment on lines +193 to +194
default:
unescaped += field[i];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve literal backslashes in KV loads

This unescaper now consumes every backslash escape and drops the backslash for unknown sequences. Fallback KV files written by previous versions stored raw values, so loading existing values such as Windows paths (C:\temp\a.txt turns \t into a tab) or foo\bar (becomes foobar) corrupts data before any write. Preserve the backslash for unknown/legacy sequences, or only decode records known to have been written with the new escaping format.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch — fixed in 51a35a0. FlushToDisk now writes a #!spark-kv-v2 marker as the first line, and LoadFromDisk only runs the unescaper on files carrying the marker; marker-less legacy files load verbatim (first line included) and are upgraded to the marked format on the next flush. The unescaper also preserves the backslash on unknown sequences instead of dropping it. Added a regression test covering the legacy raw-backslash load (C:\temp\a.txt, foo\bar) and the upgrade round-trip.


Generated by Claude Code

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Correction: the fix commit is 6ac46fa, not 51a35a0.)


Generated by Claude Code

Codex review (PR #544): the KV unescaper corrupted legacy fallback-store
files written before escaping existed — raw values like C:\temp\a.txt
decoded their backslash-t into a tab on first load and were re-flushed
corrupted.

FlushToDisk now writes a '#!spark-kv-v2' marker as the first line;
LoadFromDisk only unescapes files carrying the marker and loads
marker-less legacy files verbatim (first line included). The unescaper
also preserves the backslash on unknown escape sequences instead of
dropping it. Regression test covers legacy raw-backslash load and the
upgrade round-trip to the marked format.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0137Xnhfn3qKfg1PJyNLcP2h
@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

🔍 CodeQL Report

Language: c-cpp
Errors: 0 | Warnings: 50 | Notes: 0

⚠️ Warnings (50)
Rule Location Message
cpp/toctou-race-condition ThirdParty/SDL2/src/audio/SDL_audiodev.c:53 The filename being operated upon was previously checked, but the underlying file may have been changed since then. The filename being operated upon was previously checked, but the underlying file may have been changed since then.
cpp/toctou-race-condition ThirdParty/SDL2/src/haptic/linux/SDL_syshaptic.c:252 The filename being operated upon was previously checked, but the underlying file may have been changed since then.
cpp/toctou-race-condition ThirdParty/Utils/miniz/miniz_zip.c:4613 The filename being operated upon was previously checked, but the underlying file may have been changed since then.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:608 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:587 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:542 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:522 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:499 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:476 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:453 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:430 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:269 Comparison between broadphase_layer of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:230 Comparison between broadphase_layer of type Type and mNumLayers of wider type uint.
cpp/comparison-with-wider-type ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp:68 Comparison between l of type Type and mNumLayers of wider type uint.
cpp/wrong-type-format-argument ThirdParty/AI/recastnavigation/Recast/Source/RecastRegion.cpp:1658 This format specifier for type 'int' does not match the argument type 'long'.
cpp/integer-multiplication-cast-to-long ThirdParty/Utils/json/nlohmann_json.h:629 Multiplication result may overflow 'int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Utils/json/nlohmann_json.h:630 Multiplication result may overflow 'int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/AI/recastnavigation/Recast/Source/RecastMesh.cpp:1137 Multiplication result may overflow 'int' before it is converted to 'unsigned long'.
cpp/integer-multiplication-cast-to-long ThirdParty/AI/recastnavigation/Recast/Source/RecastMesh.cpp:878 Multiplication result may overflow 'int' before it is converted to 'unsigned long'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:209 Multiplication result may overflow 'unsigned int' before it is converted to 'unsigned long'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:1026 Multiplication result may overflow 'unsigned int' before it is converted to 'unsigned long'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:1162 Multiplication result may overflow 'unsigned int' before it is converted to 'unsigned long'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:1615 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:531 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:589 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp:626 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Physics/Hair/HairSettings.cpp:593 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/Math/DynMatrix.h:15 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp:51 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
cpp/integer-multiplication-cast-to-long ThirdParty/Physics/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp:91 Multiplication result may overflow 'unsigned int' before it is converted to 'size_type'.
... ... 20 more findings omitted

Updated: 2026-07-19T04:44:38Z — this comment is updated in-place, not duplicated.

@Krilliac
Krilliac merged commit dd57741 into Working Jul 19, 2026
56 of 58 checks passed
@Krilliac
Krilliac deleted the claude/subagents-full-force-fr2t5q branch July 19, 2026 10:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants