M0.CORE.TRACKER_FOUNDATION | Project tracker page + status model + Dxxx row mapping | M0 | — | — | 18-PROJECT-TRACKER.md, 09-DECISIONS.md | — | Overlay | — | Tracker exists and is discoverable | M0.CORE.DEP_GRAPH_SCHEMA | Must stay overlay-only (do not replace roadmap) |
M0.CORE.DEP_GRAPH_SCHEMA | Milestone DAG, edge semantics, cluster schema | M0 | — | — | tracking/milestone-dependency-map.md | — | Overlay | — | Edge kinds and DAG documented | M0.UX.TRACKER_DISCOVERABILITY | Drift if roadmap changes are not propagated |
M0.UX.TRACKER_DISCOVERABILITY | mdBook + LLM-index + methodology wiring | M0 | M0.CORE.TRACKER_FOUNDATION | — | SUMMARY.md, LLM-INDEX.md, 14-METHODOLOGY.md | — | Overlay | — | Pages are reachable and routed | — | None |
M0.OPS.MAINTENANCE_RULES | Update rules, evidence rules, index-drift watchlist | M0 | M0.CORE.TRACKER_FOUNDATION | — | 18-PROJECT-TRACKER.md | — | Overlay | — | Maintenance section present | — | Tracker becomes stale without this |
M0.OPS.FUTURE_DEFERRAL_DISCIPLINE_AND_AUDIT | Future/deferral wording discipline, classification rules, and repo-wide audit/remediation workflow for canonical docs | M0 | M0.CORE.TRACKER_FOUNDATION, M0.CORE.DEP_GRAPH_SCHEMA, M0.OPS.MAINTENANCE_RULES | M0.UX.TRACKER_DISCOVERABILITY | AGENTS.md, 14-METHODOLOGY.md, 18-PROJECT-TRACKER.md, tracking/future-language-audit.md, tracking/deferral-wording-patterns.md | — | Overlay (cross-cutting planning hardening) | — | Ambiguous future planning language is classified, mapped, or explicitly marked proposal-only/Pxxx; audit page exists and is maintainable | — | P-Core process feature: wording ambiguity becomes planning debt and can silently bypass milestone/dependency discipline |
M0.OPS.EXTERNAL_CODE_REPO_BOOTSTRAP_AND_NAVIGATION_TEMPLATES | External implementation-repo bootstrap chapter + external AGENTS.md template + source-code index template + GitHub template repository (iron-curtain/ic-template) with pre-wired CI, AGENTS.md referencing design-docs as canonical authority, and Cargo workspace scaffold | M0 | M0.CORE.TRACKER_FOUNDATION, M0.CORE.DEP_GRAPH_SCHEMA, M0.OPS.MAINTENANCE_RULES, M0.QA.CI_PIPELINE_FOUNDATION | M0.UX.TRACKER_DISCOVERABILITY, M0.OPS.FUTURE_DEFERRAL_DISCIPLINE_AND_AUDIT | tracking/external-code-project-bootstrap.md, tracking/external-project-agents-template.md, tracking/source-code-index-template.md, AGENTS.md | D020, D039 | Overlay (implementation-handoff hardening) | — | External code repos can be initialized with canonical design linkage, no-silent-divergence rules, and a code navigation index that maps code to Dxxx/G*; GitHub template repo published with passing CI | M1.CORE.RA_FORMATS_PARSE, M1.CORE.DATA_DIR_AND_PORTABILITY_BASE, M8.SDK.CLI_FOUNDATION, M9.SDK.D038_SCENARIO_EDITOR_CORE | Without this, external repos and agent workflows drift from milestone order and canonical decisions even when tracker docs exist |
M0.OPS.FREEWARE_CONTENT_MIRROR_POLICY_GATE | Rights/provenance policy gate for any official/community Workshop mirroring of legacy/freeware C&C content | M0 | M0.OPS.MAINTENANCE_RULES | PG.LEGAL.DMCA_AGENT, PG.LEGAL.ENTITY_FORMED | 09e-community.md, 09c-modding.md, 09g-interaction.md | D037, D049, D068, D069 | Overlay / Phase 4-5 enablement | — | Policy is explicit (approved/limited/rejected), provenance/takedown rules documented, and D069 owned-import remains the baseline path regardless | M3.CORE.PROPRIETARY_ASSET_IMPORT_AND_EXTRACT, M8.COM.FREEWARE_MIRROR_STARTER_CONTENT | Rights ambiguity can create legal and trust failures if implied by “freeware” wording alone |
M0.QA.CI_PIPELINE_FOUNDATION | CI/CD pipeline: PR gate (clippy, fmt, unit tests, determinism smoke), post-merge integration tests, nightly fuzz/bench/sandbox-escape, weekly full suite | M0 | M0.CORE.TRACKER_FOUNDATION | M0.OPS.MAINTENANCE_RULES | tracking/testing-strategy.md, 16-CODING-STANDARDS.md | — | Overlay (cross-cutting) | — | PR gate <10min, post-merge <30min, nightly <2hr, weekly <8hr targets defined and enforced | All implementation milestones | Without this, features ship without automated verification and regression debt compounds |
M0.QA.TYPE_SAFETY_ENFORCEMENT | clippy::disallowed_types config, newtype policy, deterministic collection ban in ic-sim, typestate requirements, capability token policy, compile-time defense verification (11 mechanisms from API misuse analysis) | M0 | M0.CORE.TRACKER_FOUNDATION | M0.QA.CI_PIPELINE_FOUNDATION | 02-ARCHITECTURE.md, 16-CODING-STANDARDS.md, architecture/type-safety.md, architecture/api-misuse-defense.md | — | Overlay (cross-cutting) | — | disallowed_types enforced in CI; newtype/typestate/capability patterns documented with review checklists; 11 compile-time defense mechanisms verified (private fields, typestate, pub(crate), !Sync, branded generics) per api-misuse-defense.md | M1.CORE.RA_FORMATS_PARSE | Must be enforced before first crate code lands; retrofitting newtypes is expensive |
M0.QA.PROPERTY_BASED_TEST_INFRA | proptest framework configuration, initial property stubs (fixed-point arithmetic, BoundedVec/BoundedCvar invariants, deterministic collection ordering), CI integration for property-based tests in T1/T2 gates | M0 | M0.QA.CI_PIPELINE_FOUNDATION | M0.QA.TYPE_SAFETY_ENFORCEMENT | tracking/testing-strategy.md, architecture/api-misuse-defense.md | — | Overlay (cross-cutting) | — | proptest configured in workspace; initial properties (fixed-point overflow, bounded collection invariants) compile and run in CI; 256 cases per property in T1/T2, 10K in T3 | M1.CORE.RA_FORMATS_PARSE | Property count must grow with milestone exit gates, not ahead of them |
M0.OPS.STANDALONE_CRATE_REPOS | Bootstrap standalone MIT/Apache crate repos (cnc-formats, fixed-game-math, deterministic-rng) before any GPL code; cargo-deny GPL-rejection CI; CONTRIBUTING.md with no-GPL-cross-pollination rule | M0 | M0.CORE.TRACKER_FOUNDATION | M0.QA.CI_PIPELINE_FOUNDATION | 09a/D076-standalone-crates.md, 05-FORMATS.md | D009, D039, D051, D076 | Phase 0 (day one) | — | Three crate repos exist with MIT OR Apache-2.0 license, CI passes, cargo-deny rejects GPL deps | M1.CORE.RA_FORMATS_PARSE, M2.CORE.SIM_FIXED_POINT_AND_ORDERS | Tier 1 crates must exist before ic-cnc-content (which wraps cnc-formats) and ic-sim (which depends on fixed-game-math + deterministic-rng); extracting later from GPL codebase is legally harder |
M1.CORE.RA_FORMATS_PARSE | ic-cnc-content asset pipeline: wraps cnc-formats clean-room parsers (.mix, .shp, .pal, .aud, .vqa) with EA-derived constants and Bevy AssetSource integration | M1 | M0, M0.OPS.STANDALONE_CRATE_REPOS, M0.OPS.EXTERNAL_CODE_REPO_BOOTSTRAP_AND_NAVIGATION_TEMPLATES | — | 08-ROADMAP.md, 05-FORMATS.md | D003, D039, D076 | Phase 0 | — | Assets parse against known-good corpus | M1.CORE.OPENRA_DATA_COMPAT | Breadth of legacy file quirks |
M1.CORE.OPENRA_DATA_COMPAT | OpenRA YAML/MiniYAML/runtime aliases and mod manifest loading | M1 | M1.CORE.RA_FORMATS_PARSE | — | 08-ROADMAP.md, 04-MODDING.md | D003, D023, D025, D026 | Phase 0 | — | OpenRA mods load to typed structs | — | Keep D023/D025/D026 mapping aligned with both import and export workflows as D066 evolves |
M1.CORE.RENDERER_SLICE | Bevy isometric map + sprite renderer, camera, fog/shroud basics | M1 | M1.CORE.RA_FORMATS_PARSE | M1.CORE.OPENRA_DATA_COMPAT | 08-ROADMAP.md, 02-ARCHITECTURE.md, 10-PERFORMANCE.md | D002, D017, D039 | Phase 1 | — | Any OpenRA RA map renders faithfully | M1.UX.VISUAL_SHOWCASE | Resist premature post-FX complexity |
M1.UX.VISUAL_SHOWCASE | Public visual slice (map rendered, animated units, camera feel) | M1 | M1.CORE.RENDERER_SLICE | — | 08-ROADMAP.md, 17-PLAYER-FLOW.md | D017 | Phase 1 | — | Community-visible slice exists | — | Not a substitute for sim correctness |
M1.CORE.DATA_DIR_AND_PORTABILITY_BASE | <data_dir> layout, overrides, early backup/portability foundation | M1 | M0, M0.QA.TYPE_SAFETY_ENFORCEMENT, M0.OPS.EXTERNAL_CODE_REPO_BOOTSTRAP_AND_NAVIGATION_TEMPLATES | — | 08-ROADMAP.md, 04-MODDING.md | D061 | Phase 0 | — | Data dir layout and overrides are stable | M1.CORE.RA_FORMATS_PARSE | Affects later install/setup and profile flows |