If a project targets multiple platforms — parity is enforced from commit #1.
platform-targets.md declares multiple platforms, the AI enforces platform parity at every lifecycle step. The AI blocks any change that introduces a platform-specific dependency without a PAL (Platform Abstraction Layer) boundary.| Category | Examples |
|---|---|
| Filesystem / Storage | Direct paths, hardcoded separators — Android uses Scoped Storage and AAssetManager |
| Memory / Resources | Assuming >4 GB RAM (mobile gets 512 MB–1 GB), no LOD/streaming |
| Graphics / Rendering | Wide subgroup ops, persistent GL context, BC7 without ASTC fallback |
| Input | Mouse coords without touch abstraction, no rotation/soft-keyboard handling |
| Threading / Lifecycle | Sync I/O on main thread (ANR on Android), no onPause/onResume |
| Build / Distribution | No size budget, x86_64 only (missing arm64-v8a), no Gradle/NDK alongside CMake |
core/ must never import platform headers directly| Asset Type | Desktop | Android |
|---|---|---|
| Textures | BC7 / DXT | ASTC / ETC2 |
| Shaders | SPIR-V (desktop Vulkan) | SPIR-V (mobile) or GLSL ES |
| Models | Full LOD chain | Reduced LOD + streaming |
| Bundles | No size limit | Budget per asset pack |
An asset pipeline that only outputs one format is a gate violation.
guidelines/cross-platform.mdopen_in_new