id: T007 name: PlasmaVMC Implementation Scaffolding status: complete created: 2025-12-08 owner: peerB goal: Create PlasmaVMC crate structure and core traits per T005 spec description: | PlasmaVMC spec (T005, 1017 lines) complete. Begin implementation with scaffolding and core abstractions. Focus: hypervisor trait abstraction, crate structure, proto definitions. Prerequisites: - T005: PlasmaVMC specification (complete) - Reference: specifications/plasmavmc/README.md acceptance: - Cargo workspace with plasmavmc-* crates compiles - HypervisorBackend trait defined with KVM stub - Proto definitions for VmService/ImageService - Basic types (VmId, VmState, VmSpec) implemented - Integration with aegis scope types steps: # Phase 1 - Scaffolding (S1-S3) - step: S1 action: Create plasmavmc workspace priority: P0 status: complete complexity: small component: plasmavmc notes: | Create plasmavmc/ directory with: - Cargo.toml (workspace) - crates/plasmavmc-types/ - crates/plasmavmc-api/ - crates/plasmavmc-hypervisor/ Follow existing chainfire/flaredb/iam structure patterns. - step: S2 action: Define core types priority: P0 status: complete complexity: small component: plasmavmc-types notes: | VmId, VmState, VmSpec, VmResources, NetworkConfig Reference spec section 4 (Data Models) - step: S3 action: Define proto/plasmavmc.proto priority: P0 status: complete complexity: small component: plasmavmc-api notes: | VmService (Create/Start/Stop/Delete/Get/List) ImageService (Register/Get/List) Reference spec section 5 (API) # Phase 2 - Core Traits (S4-S5) - step: S4 action: HypervisorBackend trait priority: P0 status: complete complexity: medium component: plasmavmc-hypervisor notes: | #[async_trait] HypervisorBackend Methods: create_vm, start_vm, stop_vm, delete_vm, get_status Reference spec section 3.2 (Hypervisor Abstraction) - step: S5 action: KVM backend stub priority: P1 status: complete complexity: medium component: plasmavmc-hypervisor notes: | KvmBackend implementing HypervisorBackend Initial stub returning NotImplemented Validates trait design # Phase 3 - API Server (S6-S7) - step: S6 action: gRPC server scaffold priority: P1 status: complete complexity: medium component: plasmavmc-api notes: | VmService implementation scaffold Aegis integration for authz Health checks (tonic-health) - step: S7 action: Integration test setup priority: P1 status: complete complexity: small component: plasmavmc notes: | Basic compile/test harness cargo test passes outcome: | COMPLETE: 2025-12-08 All 7 steps complete (S1-S7). All acceptance criteria met. Final workspace structure: - plasmavmc/Cargo.toml (workspace with 5 crates) - plasmavmc-types: VmId, VmState, VmSpec, DiskSpec, NetworkSpec, VmHandle, Error - plasmavmc-hypervisor: HypervisorBackend trait, HypervisorRegistry, BackendCapabilities - plasmavmc-kvm: KvmBackend stub implementation (returns NotImplemented) - plasmavmc-api: proto definitions (~350 lines) for VmService, ImageService, NodeService - plasmavmc-server: gRPC server with VmServiceImpl, health checks, clap CLI All tests pass (3 tests in plasmavmc-kvm). PlasmaVMC enters "operational" status alongside chainfire/flaredb/iam. notes: | This task starts PlasmaVMC implementation per roadmap "Next" phase. PlasmaVMC is the VM control plane - critical for cloud infrastructure. Spec reference: specifications/plasmavmc/README.md (1017 lines) Blocked by: None (T005 spec complete) Enables: VM lifecycle management for cloud platform backlog_ref: | T006-B contains deferred P1 Tier C items (S9-S14) for later prioritization.