photoncloud-monorepo/docs/por/T008-lightningstor/task.yaml
centra a7ec7e2158 Add T026 practical test + k8shost to flake + workspace files
- 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)
2025-12-09 06:07:50 +09:00

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