id: T008 name: LightningStor Object Storage - Spec + Scaffold status: complete created: 2025-12-08 owner: peerB (impl), peerA (spec via Aux) goal: Create lightningstor spec and implementation scaffolding description: | Entering "Later" phase per roadmap. LightningStor is object storage layer. Storage is prerequisite for PlasmaVMC images and general cloud functionality. Follow established pattern: spec → scaffold → deeper impl. Context from PROJECT.md: - lightningstor = S3-compatible object storage - Multi-tenant design critical (org/project scope) - Integrates with aegis (IAM) for auth acceptance: - Specification document at specifications/lightningstor/README.md - Cargo workspace with lightningstor-* crates compiles - Core types (Bucket, Object, ObjectKey) defined - Proto definitions for ObjectService - S3-compatible API design documented steps: # Phase 1 - Specification (Aux) - step: S1 action: Create lightningstor specification priority: P0 status: complete complexity: medium owner: peerA (Aux) notes: | Created specifications/lightningstor/README.md (948 lines) S3-compatible API, multi-tenant buckets, chunked storage Dual API: gRPC + S3 HTTP/REST # Phase 2 - Scaffolding (PeerB) - step: S2 action: Create lightningstor workspace priority: P0 status: complete complexity: small component: lightningstor notes: | Created lightningstor/Cargo.toml (workspace) Crates: lightningstor-types, lightningstor-api, lightningstor-server - step: S3 action: Define core types priority: P0 status: complete complexity: small component: lightningstor-types notes: | lib.rs, bucket.rs, object.rs, error.rs Types: Bucket, BucketId, BucketName, Object, ObjectKey, ObjectMetadata Multipart: MultipartUpload, UploadId, Part, PartNumber - step: S4 action: Define proto/lightningstor.proto priority: P0 status: complete complexity: small component: lightningstor-api notes: | Proto file (~320 lines) with ObjectService, BucketService build.rs for tonic-build proto compilation lib.rs with tonic::include_proto! - step: S5 action: S3-compatible API scaffold priority: P1 status: complete complexity: medium component: lightningstor-server notes: | Axum router with S3-compatible routes XML response formatting (ListBuckets, ListObjects, Error) gRPC services: ObjectServiceImpl, BucketServiceImpl main.rs: dual server (gRPC:9000, S3 HTTP:9001) - step: S6 action: Integration test setup priority: P1 status: complete complexity: small component: lightningstor notes: | cargo check passes (0 warnings) cargo test passes (4 tests) outcome: | COMPLETE: 2025-12-08 All 6 steps complete (S1-S6). All acceptance criteria met. Final workspace structure: - lightningstor/Cargo.toml (workspace with 3 crates) - lightningstor-types: Bucket, Object, ObjectKey, Error (~600 lines) - lightningstor-api: proto (~320 lines) + lib.rs + build.rs - lightningstor-server: gRPC services + S3 HTTP scaffold + main.rs Tests: 4 pass LightningStor enters "operational" status alongside chainfire/flaredb/iam/plasmavmc. notes: | This task enters "Later" phase per roadmap. Storage layer is fundamental for cloud platform. Enables: VM images, user data, backups Pattern: spec (Aux) → scaffold (PeerB) → integration