- Created T026-practical-test task.yaml for MVP smoke testing - Added k8shost-server to flake.nix (packages, apps, overlays) - Staged all workspace directories for nix flake build - Updated flake.nix shellHook to include k8shost Resolves: T026.S1 blocker (R8 - nix submodule visibility)
111 lines
3.4 KiB
YAML
111 lines
3.4 KiB
YAML
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
|