id: T016 name: LightningSTOR Object Storage Deepening status: complete goal: Implement functional object storage with dual API (native gRPC + S3-compatible HTTP) priority: P1 owner: peerA (strategy) + peerB (implementation) created: 2025-12-08 depends_on: [T015] context: | PROJECT.md item 5 specifies LightningSTOR: "オブジェクトストレージ基盤(LightningSTOR) - この基盤の標準的な感じの(ある程度共通化されており、使いやすい)APIと、S3互換なAPIがあると良いかも" T008 created scaffold with spec (948L). Current state: - Workspace structure exists - Types defined (Bucket, Object, MultipartUpload) - Proto files defined - Basic S3 handler scaffold Need functional implementation for: - Object CRUD operations - Bucket management - S3 API compatibility (PUT/GET/DELETE/LIST) - ChainFire metadata persistence - Local filesystem or pluggable storage backend acceptance: - Native gRPC API functional (CreateBucket, PutObject, GetObject, DeleteObject, ListObjects) - S3-compatible HTTP API functional (basic operations) - Metadata persisted to ChainFire - Object data stored to configurable backend (local FS initially) - Integration test proves CRUD lifecycle steps: - step: S1 action: Storage backend abstraction priority: P0 status: complete owner: peerB completed: 2025-12-08 notes: | Design StorageBackend trait for object data. Implement LocalFsBackend for initial development. Plan for future backends (distributed, cloud). deliverables: - StorageBackend trait - LocalFsBackend implementation evidence: - lightningstor/crates/lightningstor-storage/: StorageBackend traitとLocalFsBackend実装完了、オブジェクト/パート操作、ユニットテスト - step: S2 action: Implement native gRPC object service priority: P0 status: complete owner: peerB completed: 2025-12-08 notes: | Implement ObjectService gRPC handlers. Wire to StorageBackend + ChainFire for metadata. Support: CreateBucket, PutObject, GetObject, DeleteObject, ListObjects. deliverables: - Functional gRPC ObjectService - Functional gRPC BucketService - ChainFire metadata persistence evidence: - ObjectService: put_object, get_object, delete_object, head_object, list_objects 実装完了 - BucketService: create_bucket, delete_bucket, head_bucket, list_buckets 実装完了 - MetadataStore連携、StorageBackend連携完了 - cargo check -p lightningstor-server 通過 - step: S3 action: Implement S3-compatible HTTP API priority: P1 status: complete owner: peerB completed: 2025-12-08 notes: | Extend S3 handler with actual implementation. Map S3 operations to internal ObjectService. Support: PUT, GET, DELETE, LIST (basic). deliverables: - S3 HTTP endpoints functional - AWS CLI compatibility test evidence: - S3State: storage + metadata 共有 - Bucket ops: create_bucket, delete_bucket, head_bucket, list_buckets - Object ops: put_object, get_object, delete_object, head_object, list_objects - cargo check -p lightningstor-server 通過 - step: S4 action: Integration test priority: P1 status: complete owner: peerB completed: 2025-12-08 notes: | End-to-end test for object lifecycle. Test both gRPC and S3 APIs. Verify metadata persistence and data integrity. deliverables: - Integration tests passing - Evidence log evidence: - tests/integration.rs: 5 tests passing - test_bucket_lifecycle: bucket CRUD - test_object_lifecycle: object CRUD with storage - test_full_crud_cycle: multi-bucket/multi-object lifecycle - MetadataStore.new_in_memory(): in-memory backend for testing blockers: [] evidence: [] notes: | LightningSTOR enables: - VM image storage for PlasmaVMC - User object storage (S3-compatible) - Foundation for block storage later Risk: S3 API is large; focus on core operations first. Mitigation: Implement minimal viable S3 subset, expand later.