Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

UX Surface Gate Clusters (Cross-Check for Milestone Completeness)

These clusters are used to prevent milestone definitions from becoming backend-only.

UX Cluster IDMilestone GateRequired Flow SurfaceCanonical Docs
UXG.M3.FIRST_RUN_TO_SKIRMISHM3D069 setup → main menu → skirmish launch path17-PLAYER-FLOW.md, 09g-interaction.md
UXG.M4.ONLINE_CONNECT_MINIMALM4Minimal online connect/host flow without tracker/ranked assumptions17-PLAYER-FLOW.md, 03-NETCODE.md
UXG.M5.CAMPAIGN_RUNTIME_LOOPM5Briefing → mission → debrief → next flow + save/load17-PLAYER-FLOW.md, modding/campaigns.md
UXG.M7.LOBBY_BROWSER_RANKED_TRUSTM7Browser/lobby/ranked trust labels + report/block/avoid/reporting surfaces17-PLAYER-FLOW.md, 07-CROSS-ENGINE.md
UXG.M9.SDK_SCENARIO_AUTHORINGM9SDK scenario editor + validate/test/publish + resource manager + workshop hooks17-PLAYER-FLOW.md, 09f-tools.md
UXG.M10.SDK_CAMPAIGN_AND_MODESM10Campaign editor + game mode templates + D070 role-aware authoring surfaces17-PLAYER-FLOW.md, 09f-tools.md, 09d-gameplay.md

Policy / External Gate Nodes

Gate Node IDTypeBlocks Validation OfCanonical SourceNotes
PG.P002.FIXED_POINT_SCALEResolvedM2, M309-DECISIONS.md pending tableResolved: Scale 1024, matching OpenRA. See research/fixed-point-math-design.md. Gate cleared.
PG.P003.AUDIO_LIBRARYResolvedM3, M609-DECISIONS.md pending tableResolved: Kira via bevy_kira_audio. See research/audio-library-music-integration-design.md. Gate cleared.
PG.P004.LOBBY_WIRE_DETAILSResolvedM7 (and some M4 polish)09-DECISIONS.md pending tableResolved: Complete wire protocol (CBOR, 40+ messages). See research/lobby-matchmaking-wire-protocol-design.md. Gate cleared.
PG.LEGAL.ENTITY_FORMEDPolicy gateM7, M9 production validation08-ROADMAP.md, 06-SECURITY.mdNeeded before public server infra and user-data-bearing services go live
PG.LEGAL.DMCA_AGENTPolicy gateM9 Workshop production validation08-ROADMAP.md, 09e-community.mdRequired before accepting user uploads under safe harbor expectations
PG.LEGAL.CNC_FREEWARE_MIRROR_RIGHTS_POLICYPolicy gateAny official/community Workshop mirroring of legacy/freeware C&C content (M8.COM.FREEWARE_MIRROR_STARTER_CONTENT)09e-community.md, 06-SECURITY.mdMust explicitly define rights basis, provenance labels, and takedown/update policy; D069 owned-install import remains available regardless

External Source Study Mappings (Confirmatory Research -> Overlay)

Use this section to record accepted takeaways from source studies that refine implementation emphasis, docs, or execution sequencing without necessarily creating a new Dxxx.

Source StudyAccepted TakeawayMapped ClustersAction TypeWhy It Matters
research/bar-recoil-source-study.mdFast local creator iteration through a real game path (BAR .sdd/devmode-style concept adapted to IC)M8.SDK.CLI_FOUNDATION, M8.COM.MINIMAL_WORKSHOP, M9.SDK.D038_SCENARIO_EDITOR_COREExecution emphasis / DX refinementReduces creator-loop friction and prevents “package/install every test” workflow debt
research/bar-recoil-source-study.mdExplicit authoritative vs client-local scripting/API labeling (Recoil synced/unsynced lesson adapted to IC docs/tooling)M5.SP.LUA_MISSION_RUNTIME, M8.SDK.AUTHORING_REFERENCE_FOUNDATION, M9.SDK.EMBEDDED_AUTHORING_MANUAL, M7.SEC.BEHAVIORAL_ANALYSIS_REPORTINGDocs taxonomy / trust-boundary clarityProtects determinism and anti-cheat/trust messaging by making authority scope obvious to creators
research/bar-recoil-source-study.mdExtension taxonomy for gameplay-authoritative vs local UI/QoL addons (adapted, not copied)M9.COM.D049_FULL_WORKSHOP_CAS, M10.MOD.D066_RA1_EXPORT_EXTENSIBILITY, M10.SDK.LOCALIZATION_PLUGIN_HARDENINGEcosystem policy vocabulary / labelingPrevents plugin/UI extension ambiguity and competitive-integrity confusion as creator ecosystem grows
research/bar-recoil-source-study.mdDeep, searchable manual/docs are product-critical (BAR/Recoil docs culture)M8.SDK.AUTHORING_REFERENCE_FOUNDATION, M9.SDK.EMBEDDED_AUTHORING_MANUALPriority reinforcement (no milestone shift)Confirms current sequencing that docs/manual work belongs in creator milestones, not post-polish
research/bar-recoil-source-study.mdKeep lockstep buffering/jitter/rejoin behavior visible in diagnostics/trust messaging (Recoil lockstep pain confirms IC emphasis)M4.NET.RELAY_TIME_AUTHORITY_AND_VALIDATION, M4.UX.MINIMAL_ONLINE_CONNECT_FLOW, M7.SEC.BEHAVIORAL_ANALYSIS_REPORTING, M7.NET.SPECTATOR_TOURNAMENTDiagnostics/UX emphasis (no milestone shift)Prevents opaque “net feels bad” failure modes and preserves honest trust claims
research/bar-recoil-source-study.mdProtocol migration hygiene: explicit capability/trust labels for experimental vs certified paths (BAR Tachyon rollout signal)M7.NET.TRACKING_BROWSER_DISCOVERY, M7.NET.CROSS_ENGINE_BRIDGE_AND_TRUST, M7.NET.D052_SIGNED_CREDS_RESULTSRollout/process UX emphasisHelps netcode/bridge evolution without confusing users about ranked/certified guarantees
research/bar-recoil-source-study.mdModeration capability granularity: avoid “mute” semantics that accidentally disable unrelated functions (BAR moderation lesson)M7.UX.REPORT_BLOCK_AVOID_REVIEW, M7.NET.RANKED_MATCHMAKING, M11.COM.ECOSYSTEM_POLISH_GOVERNANCEModeration policy/UX refinementKeeps sanctions proportional and prevents protocol-coupled UX breakage
research/bar-recoil-source-study.mdPathfinding API/tuning humility: bounded script-facing path estimates + conformance-first exposure (Recoil changelog signal)M2.CORE.PATH_SPATIAL, M5.SP.LUA_MISSION_RUNTIME, M8.SDK.AUTHORING_REFERENCE_FOUNDATIONAPI surface discipline / regression emphasisProtects deterministic hot paths and frames path queries as explicit, documented capabilities
research/open-source-rts-communication-markers-study.mdTreat OpenRA-compatible beacons/radar pings as a first-class D059 compatibility and replay-UX requirement (not just a Lua edge case)M5.SP.LUA_MISSION_RUNTIME, M7.UX.D059_BEACONS_MARKERS_LABELS, M10.GAME.D070_TEMPLATE_TOOLKITCommunication compatibility / schema hardeningKeeps Lua/UI/console/replay marker behavior coherent for classic C&C expectations and co-op authoring
research/open-source-rts-communication-markers-study.mdMarker semantics must stay icon/type-first; color + labels are bounded style metadata (accessibility and spectator clarity)M7.UX.D059_BEACONS_MARKERS_LABELS, M7.NET.SPECTATOR_TOURNAMENT, M11.PLAT.BROWSER_MOBILE_POLISHUX/readability disciplinePrevents color-only beacon semantics and preserves clarity across KBM/controller/touch and replay/spectator views
research/open-source-rts-communication-markers-study.mdCommunication capability scoping (chat/voice/ping/draw/vote) must remain distinct under moderation/sanctionsM7.UX.REPORT_BLOCK_AVOID_REVIEW, M7.NET.RANKED_MATCHMAKING, M11.COM.ECOSYSTEM_POLISH_GOVERNANCE, M7.UX.D059_BEACONS_MARKERS_LABELSModeration/comms UX hardeningAvoids sanction side effects that break tactical coordination or ranked match integrity
research/open-source-rts-communication-markers-study.mdReplay-preserved coordination context (pings/markers/labels) is a force multiplier for moderation, teaching, and D070 iterationM7.SEC.BEHAVIORAL_ANALYSIS_REPORTING, M7.NET.SPECTATOR_TOURNAMENT, M7.UX.D059_BEACONS_MARKERS_LABELS, M10.GAME.D070_TEMPLATE_TOOLKITReplay/moderation/co-op iteration emphasisImproves post-match understanding and reduces guesswork in moderation and co-op mode tuning
research/open-source-rts-communication-markers-study.mdGenerals-derived UX refinements: explicit recipient/visibility semantics behind UI chat scopes, persistent-marker active caps with clear failure feedback, and draft-preserving chat entry behaviorM7.UX.D059_BEACONS_MARKERS_LABELS, M7.UX.REPORT_BLOCK_AVOID_REVIEW, M7.NET.SPECTATOR_TOURNAMENT, M11.PLAT.BROWSER_MOBILE_POLISHCommunication UX hardening / anti-spam refinementConverts concrete Generals source patterns into IC D059 deliverables without importing legacy engine/network assumptions
research/rtl-bidi-open-source-implementation-study.mdRTL correctness requires shaping + BiDi + role-aware font fallback + selective layout direction policy (not font coverage alone), plus explicit D059 anti-spoof vs legitimate RTL splitM6.UX.RTL_BIDI_GAME_UI_BASELINE, M7.UX.D059_RTL_CHAT_MARKER_TEXT_SAFETY, M7.UX.D059_BEACONS_MARKERS_LABELS, M9.SDK.RTL_BASIC_EDITOR_UI_LAYOUT, M10.SDK.RTL_BIDI_LOCALIZATION_WORKBENCH_PREVIEW, M10.SDK.LOCALIZATION_PLUGIN_HARDENING, M11.PLAT.BROWSER_MOBILE_POLISHLocalization/UX correctness hardening + test emphasisPrevents “Unicode glyph coverage” false positives and keeps runtime/editor/chat RTL behavior aligned before localization claims scale
research/source-sdk-2013-source-study.mdFixed-point determinism validated: Source’s float prediction requires NaN checks, bit-level comparison, platform-specific friction, and runtime divergence logging — all eliminated by i32/i64M2.CORE.SIM_FIXED_POINT_AND_ORDERS, M0.QA.CI_PIPELINE_FOUNDATIONArchitecture validation (no milestone shift)Strongest empirical evidence for fixed-point math decision; Source’s CDiffManager concept maps to IC’s CI-grade determinism test
research/source-sdk-2013-source-study.mdSafe parsing validated: every major Source CVE (buffer overflow, integer underflow, path traversal) is in C/C++ content parsing code that Rust prevents at compile timeM1.CORE.RA_FORMATS_PARSE, M0.QA.CI_PIPELINE_FOUNDATIONSecurity validation + fuzz emphasisReinforces no-unsafe-in-content-pipeline rule and fuzz testing priority for ic-cnc-content, YAML, replay, and network parsers
research/source-sdk-2013-source-study.mdCapability tokens validated: Source’s opt-in ConVar security flags (FCVAR_CHEAT) failed because one forgotten flag = exploit; secure-by-default capability tokens are the correct answerM0.QA.TYPE_SAFETY_ENFORCEMENT, M6.SEC.WASM_INTERMODULE_ISOLATIONSecurity architecture validationConfirms IC’s secure-by-default approach over Source’s opt-in security annotation model
research/source-sdk-2013-source-study.mdTypestate validated: Source’s CTeamplayRoundBasedRules 11-state machine uses runtime enums with unrestricted transitions — IC’s compile-time typestate prevents invalid transitionsM0.QA.TYPE_SAFETY_ENFORCEMENTType-safety validation (no milestone shift)Runtime enum state machines are a known Source pattern that IC explicitly improves upon
research/source-sdk-2013-source-study.mdSingle-schema wire format validated: Source’s manual SendProp/RecvProp table mirroring causes silent desync when tables drift — IC’s ic-protocol single-schema approach prevents thisM4.NET.MINIMAL_LOCKSTEP_ONLINEProtocol safety validationManual schema mirroring is a known footgun in Source multiplayer code
research/source-sdk-2013-source-study.mdZero testing infrastructure: Source SDK has no unit tests, no CI, no fuzz testing; CVE-2021-30481 exploited a 2003-era library undetected for 18 yearsM0.QA.CI_PIPELINE_FOUNDATIONTesting priority reinforcementConfirms that CI from day one and fuzz testing for all parsers are non-negotiable
research/source-sdk-2013-source-study.mdA* marker system: global generation counter eliminates O(n) clear between searches; closest-reachable fallback prevents “no path” failures; cost functor template enables per-unit-type pathfindingM2.CORE.PATH_SPATIALPathfinding implementation pattern (no milestone shift)Essential for 1000-unit RTS: marker system + binary heap + fixed-point costs; Source’s sorted linked list and float costs are anti-patterns at RTS scale
research/source-sdk-2013-source-study.mdAI interrupt condition masks (bitmask AND per tick), strategy slots for squad coordination, efficiency tiering, and six pathfinding cache typesM6.SP.SKIRMISH_AI_BASELINE, M2.CORE.PATH_SPATIALAI/pathfinding implementation patterns (no milestone shift)Interrupt masks are O(1) per unit; strategy slots prevent tactical degeneracy; all caches must expire by sim tick (not wall-clock) for determinism
research/source-sdk-2013-source-study.mdFGD editor metadata manually maintained separately from code (7 locations per entity definition, guaranteed drift); entity I/O data-driven wiring is powerful UX but unvalidated at compile timeM8.SDK.CLI_FOUNDATION, M9.SDK.D038_SCENARIO_EDITOR_CORESDK architecture validationConfirms single-source YAML schema approach: one definition serves as runtime validation, editor metadata, and CLI tooling input; validates CLI-first (M8) before visual editor (M9)
research/source-sdk-2013-source-study.mdPVS filtering (per-client entity visibility) maps to fog-authoritative relay; sv_max_usercmd_future_ticks caps client command lookahead; baseline+delta for reconnectionM4.NET.RELAY_TIME_AUTHORITY_AND_VALIDATION, M4.NET.RECONNECT_BASELINENetcode pattern validation (no milestone shift)Three Source netcode patterns translate directly to lockstep: fog authority, tick-count validation, and snapshot-based reconnection
research/source-sdk-2013-source-study.mdnet_graph 1/2/3 layered diagnostic overlay → IC’s /diag 0-3 system: 4-level real-time observability, graph history mode, mod diagnostic API, mobile supportM2.CORE.DIAG_OVERLAY_L1, M3.GAME.DIAG_OVERLAY_L2, M4.NET.DIAG_OVERLAY_NET, M6.SP.DIAG_OVERLAY_DEV, M8.SDK.MOD_DIAG_APINew design (inspired by Source, formally specified)Phased rollout: L1 basic (M2) → L2 detailed (M3) → network panels (M4) → developer panels (M6) → mod API (M8). See 10-PERFORMANCE.md § Diagnostic Overlay, D058 /diag commands
research/generals-zero-hour-diagnostic-tools-study.mdSAGE PerfGather gross/net time distinction for per-system bars; command arrival cushion metric for lockstep network panel; configurable collection interval for expensive L2 metricsM2.CORE.DIAG_OVERLAY_L1, M3.GAME.DIAG_OVERLAY_L2, M4.NET.DIAG_OVERLAY_NETDiagnostic overlay refinement (enhances existing design)Gross/net prevents double-counting in hierarchical systems; cushion is the most meaningful lockstep metric; 500ms batch avoids per-frame overhead for expensive queries
research/generals-zero-hour-diagnostic-tools-study.mdSAGE W3DDebugIcons world markers (category-filtered); frame-gated desync logging (auto-capture around divergence); tick-stepping (/step) for determinism debuggingM6.SP.DIAG_OVERLAY_DEV, M4.NET.DIAG_OVERLAY_NETDeveloper tool additions (new capabilities)Category-filtered markers essential for 1000-unit scale; frame-gated logging avoids always-on overhead; /step enables fine-grained sim debugging

Mapping Rules (How to Keep This Page Useful)

  1. Cluster-level, not bullet-level sprawl: map roadmap deliverables and exit criteria into stable feature clusters unless a bullet is itself a dependency boundary.
  2. Dxxx ownership lives in 18-PROJECT-TRACKER.md: this page references decisions at cluster level for dependency reasoning.
  3. Gameplay familiarity ordering follows 11-OPENRA-FEATURES.md: P0 gates M2, P1/P2 gate M3, P3 is explicitly deferred and tracked.
  4. Mark policy/legal prerequisites as policy_gate nodes, not hidden assumptions.
  5. Keep the “minimal online slice” narrow: M4 must not absorb browser/ranked/spectator requirements.
  6. Keep “creator foundation” distinct from “full visual editor”: M8 is a parallel lane, M9 is the visual authoring platform milestone.
  7. New features must be inserted in sequence, not appended as unsorted TODOs: every accepted feature proposal gets a milestone position and dependency edges in the same planning pass.
  8. Priority is mandatory for placement decisions: new clusters should be classified (P-Core, P-Differentiator, P-Creator, P-Scale, P-Optional) and placed so higher-priority critical-path work is not silently displaced.
  9. If a feature spans multiple milestones, split the cluster or add explicit validation_depends_on / integration_gate edges instead of hiding sequencing inside notes.
  10. If non-indexed decision references reappear, normalize the decision index in the same planning pass and update tracker coverage.
  11. When a source study yields accepted implementation refinements, map them here (cluster references + action type) so they influence execution planning instead of living only in research/*.md.
  12. Future/deferred wording in canonical docs must map here when it implies accepted work. If a statement is a planned deferral, add/update the affected cluster row (or create one) in the same planning pass and update tracking/future-language-audit.md; if it cannot be placed, it is proposal-only or a Pxxx, not scheduled work.
  13. If accepted work changes external implementation-repo onboarding or code navigation expectations, update the bootstrap and template docs (tracking/external-code-project-bootstrap.md, tracking/external-project-agents-template.md, tracking/source-code-index-template.md) in the same planning pass.

New Feature Intake (Dependency Map Workflow)

Use this workflow whenever a new feature/mode/tooling surface is added to the design:

  1. Decide whether it is a Dxxx decision, a feature cluster, or both.
  2. Assign a primary milestone (M0–M11) based on what must exist before the feature becomes implementable.
  3. Add hard/soft/validation/policy/integration edges to existing milestones/clusters.
  4. Record the canonical docs + roadmap phase mapping in the cluster row.
  5. Check for milestone displacement: if the feature would delay a higher-priority milestone, mark it P-Optional/experimental or move it later.
  6. Update 18-PROJECT-TRACKER.md in the same change set (milestone snapshot/risk/coverage impact and Dxxx row if applicable).
  7. If the feature docs introduce future/deferred wording, classify it and update tracking/future-language-audit.md (and use tracking/deferral-wording-patterns.md for replacement wording where needed).
  8. If the feature changes expected codebase structure or implementer routing, update the external bootstrap/AGENTS/code-index templates so external repos inherit the same assumptions.

Deferred Feature Placement Examples (Canonical Patterns)

  • Good (planned deferral): “Deferred to M10 (P-Creator) after M9.SDK.D038_SCENARIO_EDITOR_CORE; not part of M9 exit criteria.” Result: add/update an M10.* cluster row with hard/soft edges and note the out-of-scope boundary.
  • Good (north star): “Long-term vision only; depends on M7.NET.CROSS_ENGINE_BRIDGE_AND_TRUST + M11.VISUAL.D048_AND_RENDER_MOD_INFRA; trust-labeled and not a ranked promise.” Result: no new cluster if already covered, but add/update tracker risk/trust-label notes.
  • Bad (ambiguous): “Could add later if players want it.” Result: rewrite into planned deferral + overlay mapping, or mark proposal-only / Pxxx.
  • Good (external implementation handoff): “This introduces a new first-class subsystem boundary; update CODE-INDEX.md template examples and external AGENTS.md guidance in M0 tooling docs.” Result: preserve LLM/human navigation quality across implementation repos as the architecture grows.