Feature Cluster Dependency Matrix - M9
See milestone-dependency-map.md for navigation.
| Cluster ID | Feature Cluster | Milestone | Depends On (Hard) | Depends On (Soft) | Canonical Docs | Decisions | Roadmap Phase | Gap Priority | Exit Gate | Parallelizable With | Risk Notes |
| M9.SDK.D038_SCENARIO_EDITOR_CORE | Scenario editor core (terrain, entities, triggers, modules, compositions, validate/test/publish flow) | M9 | M8.SDK.CLI_FOUNDATION, M7.NET.TRACKING_BROWSER_DISCOVERY, M8.MOD.PROFILES_NAMESPACE_FOUNDATION | M6.UX.D065_ONBOARDING_COMMANDER_SCHOOL | 09f-tools.md, 17-PLAYER-FLOW.md, 04-MODDING.md | D038, D065, D069 | Phase 6a | — | D038 core authoring loop works end-to-end | M9.SDK.D040_ASSET_STUDIO, M9.MOD.D066_OPENRA_EXPORT_CORE | Runtime/schema drift if started too early |
| M9.SDK.RTL_BASIC_EDITOR_UI_LAYOUT | RTL-safe SDK/editor chrome baseline (text shaping, core panel mirroring, directional icon policy in editor surfaces) | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE, M6.UX.RTL_BIDI_GAME_UI_BASELINE | M9.SDK.EMBEDDED_AUTHORING_MANUAL, M9.SDK.D040_ASSET_STUDIO | 09f-tools.md, 17-PLAYER-FLOW.md, 02-ARCHITECTURE.md | D038, D065 | Phase 6a | — | Core SDK surfaces and embedded docs panes render localized RTL text correctly without broken shaping/clipping; selective mirroring rules match runtime policy | M10.SDK.RTL_BIDI_LOCALIZATION_WORKBENCH_PREVIEW, M10.SDK.LOCALIZATION_PLUGIN_HARDENING | Editor RTL support must not wait for advanced localization workbench features |
| M9.SDK.EMBEDDED_AUTHORING_MANUAL | SDK-embedded authoring manual + context help (F1, ?, searchable docs browser) using D037 knowledge-base content | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE, M8.SDK.AUTHORING_REFERENCE_FOUNDATION | M9.SDK.D040_ASSET_STUDIO, M10.SDK.D038_CAMPAIGN_EDITOR | 09f-tools.md, 17-PLAYER-FLOW.md, 09e-community.md | D038, D037, D020 | Phase 6a (with 6b campaign/editor-surface expansion) | — | Creators can inspect parameters/flags/API docs in-context without leaving the SDK; offline snapshot works | M9.SDK.GIT_VALIDATE_PROFILE_PLAYTEST | P-Creator: must stay one-source docs (web + SDK snapshot), not a second manual |
| M9.SDK.D040_ASSET_STUDIO | Asset Studio baseline + conversion/import + provenance plumbing + publish readiness integration | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE, M8.COM.MINIMAL_WORKSHOP | — | 09f-tools.md, 17-PLAYER-FLOW.md | D040, D049, D068 | Phase 6a | — | Asset editing/import pipeline supports scenario authoring | M9.UX.RESOURCE_MANAGER_AND_PUBLISH_READINESS | Provenance/rules UI complexity should stay advanced-only |
| M9.COM.D049_FULL_WORKSHOP_CAS | Full Workshop federation/CAS/P2P distribution and moderation tooling | M9 | M8.COM.MINIMAL_WORKSHOP, M7.NET.D052_SIGNED_CREDS_RESULTS | M7.UX.REPORT_BLOCK_AVOID_REVIEW | 09e-community.md, 15-SERVER-GUIDE.md | D049, D030, D052, D037 | Phase 6a | — | Full Workshop features validated (CAS, moderation, auto-download, reputation) | M9.MOD.D066_OPENRA_EXPORT_CORE | Legal/policy gates must be treated as validation blockers |
| M9.P2P.HARDENING | p2p-distribute hardening and completion — fuzzing (bencode, wire protocol, metadata parsers, 1M+ iterations), chaos testing (network/disk), performance benchmarks, cross-platform CI, v2/hybrid torrent support (BEP 52), storage performance (disk cache, fast resume, crash recovery), full documentation, crates.io publish (design milestones 6, 8, 10) | M9 | M8.P2P.DISCOVERY_AND_NAT, M8.P2P.IC_INTEGRATION_BASELINE | M9.COM.D049_FULL_WORKSHOP_CAS | research/p2p-distribute-crate-design.md | D076, D049 | Phase 6a overlay (standalone crate) | — | 1M+ fuzz iterations with no panics; interop verified against Transmission, qBittorrent, librqbit; fast resume < 1s for 10K pieces; cargo-deny passes; published to crates.io | M9.COM.WORKSHOP_MANIFEST_SIGNING_AND_PROVENANCE | v2/hybrid support (BEP 52) is feature-gated and can be deferred if M9 schedule is tight |
| M9.P2P.CONTROL_SURFACES | p2p-distribute control surfaces — Web API (axum), JSON-RPC, CLI binary, Prometheus metrics, GeoIP peer filtering (design milestone 9) | M9 | M8.P2P.DISCOVERY_AND_NAT, M8.P2P.EMBEDDED_TRACKER | M9.P2P.HARDENING | research/p2p-distribute-crate-design.md | D076, D049, D074 | Phase 6a overlay (standalone crate) | — | Headless daemon fully controllable via web API and CLI; /metrics produces valid Prometheus output; ic-server operator panel can monitor Workshop seeding via web API | M9.OPS.WORKSHOP_ADMIN_PANEL_FULL | Control surfaces are feature-gated; ic-server admin panel consumes the web API |
| M9.UX.D049_MEDIA_LANGUAGE_CAPABILITY_METADATA_FILTERS | D049 media language capability metadata/trust labels (Audio/Subs/CC, coverage, translation source) + Workshop/Installed Content Manager filters/badges | M9 | M9.COM.D049_FULL_WORKSHOP_CAS, M6.SP.MEDIA_VARIANTS_AND_FALLBACKS | M9.COM.WORKSHOP_MANIFEST_SIGNING_AND_PROVENANCE, M10.SDK.LOCALIZATION_PLUGIN_HARDENING | 09e-community.md, 09c-modding.md, 17-PLAYER-FLOW.md | D049, D068, D037, D053 | Phase 6a/6b | — | Players and admins can see language support/trust coverage for media packs and make predictable fallback decisions before playback | M11.UX.D068_MACHINE_TRANSLATED_SUBTITLE_CC_FALLBACK | Mislabeled language coverage or unlabeled machine translations can break trust and fallback UX |
| M9.COM.WORKSHOP_MANIFEST_SIGNING_AND_PROVENANCE | Manifest/index/release metadata signing (Ed25519), provenance enforcement, and internal hash hardening (SHA-256 canonical + BLAKE3 internal acceleration where adopted) | M9 | M9.COM.D049_FULL_WORKSHOP_CAS, M8.COM.WORKSHOP_PACKAGE_HASH_VERIFY_BASELINE, M7.NET.D052_SIGNED_CREDS_RESULTS | M0.OPS.FREEWARE_CONTENT_MIRROR_POLICY_GATE | 09e-community.md, 06-SECURITY.md, 15-SERVER-GUIDE.md | D049, D030, D052, D037 | Phase 6a | — | Publish/install/admin flows verify signed metadata and provenance consistently; hash/signature roles are explicit and auditable | M9.OPS.WORKSHOP_ADMIN_PANEL_FULL, M9.MOD.D066_OPENRA_EXPORT_CORE | Key management/rotation and mixed hash-role drift can create operator and trust confusion |
| M9.OPS.WORKSHOP_ADMIN_PANEL_FULL | Full Workshop admin panel (moderation, provenance review, channel controls, dependency impact, quarantine/rollback, RBAC, audit trail) | M9 | M9.COM.D049_FULL_WORKSHOP_CAS, M8.OPS.WORKSHOP_OPERATOR_PANEL_MINIMAL | M9.COM.WORKSHOP_MANIFEST_SIGNING_AND_PROVENANCE, M7.UX.REPORT_BLOCK_AVOID_REVIEW | 09e-community.md, 15-SERVER-GUIDE.md, 06-SECURITY.md | D049, D037, D052, D034 | Phase 6a | — | Operators/moderators/admins can manage Workshop health, trust, and incidents from a clear audited surface instead of ad hoc scripts | M11.COM.ECOSYSTEM_POLISH_GOVERNANCE | RBAC mistakes or weak auditability can undermine moderation legitimacy and incident response |
| M9.MOD.D066_OPENRA_EXPORT_CORE | OpenRA export core, fidelity reports, export-safe authoring mode | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE, M9.SDK.D040_ASSET_STUDIO, M9.COM.D049_FULL_WORKSHOP_CAS | M7.NET.CROSS_ENGINE_BRIDGE_AND_TRUST | 09c-modding.md, 09f-tools.md, 04-MODDING.md | D066, D038, D040, D049 | Phase 6a | — | ic export --target openra valid for supported scenarios + fidelity report | — | Must preserve IC-native-first stance |
| M9.SDK.GIT_VALIDATE_PROFILE_PLAYTEST | Git-first collaboration, Validate & Playtest, Profile Playtest v1, migration preview | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE | M2.COM.TELEMETRY_DB_FOUNDATION | 09f-tools.md, 10-PERFORMANCE.md, 17-PLAYER-FLOW.md | D038, D040 | Phase 6a | — | Authoring validation and profiling are usable without blocking preview/test | — | UX must stay simple-first |
| M9.UX.RESOURCE_MANAGER_AND_PUBLISH_READINESS | Resource Manager panel + unified publish readiness UX | M9 | M9.SDK.D038_SCENARIO_EDITOR_CORE, M9.SDK.D040_ASSET_STUDIO, M8.MOD.SELECTIVE_INSTALL_INFRA_HOOKS | — | 09f-tools.md, 17-PLAYER-FLOW.md | D038, D040, D068, D049 | Phase 6a | — | Resource flows and publish checks are non-dead-end and understandable | — | Avoid scattering warnings across panels |