photoncloud-monorepo/docs/por/T009-flashdns/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

113 lines
3.2 KiB
YAML

id: T009
name: FlashDNS - Spec + Scaffold
status: complete
created: 2025-12-08
owner: peerB (impl), peerA (spec via Aux)
goal: Create flashdns spec and implementation scaffolding
description: |
Continue "Later" phase. FlashDNS is the DNS service layer.
DNS is foundational for service discovery in cloud platform.
Follow established pattern: spec → scaffold.
Context:
- flashdns = authoritative DNS service
- Multi-tenant design (org/project zones)
- Integrates with aegis (IAM) for auth
- ChainFire for zone/record storage
acceptance:
- Specification document at specifications/flashdns/README.md
- Cargo workspace with flashdns-* crates compiles
- Core types (Zone, Record, RecordType) defined
- Proto definitions for DnsService
- UDP/TCP DNS protocol scaffold
steps:
# Phase 1 - Specification (Aux)
- step: S1
action: Create flashdns specification
priority: P0
status: complete
complexity: medium
owner: peerA (Aux)
notes: |
Aux complete (ID: fb4328)
specifications/flashdns/README.md (1043 lines)
Dual-protocol: gRPC management + DNS protocol
9 record types, trust-dns-proto integration
# Phase 2 - Scaffolding (PeerB)
- step: S2
action: Create flashdns workspace
priority: P0
status: complete
complexity: small
component: flashdns
notes: |
Created flashdns/Cargo.toml (workspace)
Crates: flashdns-types, flashdns-api, flashdns-server
trust-dns-proto for DNS protocol
- step: S3
action: Define core types
priority: P0
status: complete
complexity: small
component: flashdns-types
notes: |
Zone, ZoneId, ZoneName, ZoneStatus
Record, RecordId, RecordType, RecordData, Ttl
All DNS record types: A, AAAA, CNAME, MX, TXT, SRV, NS, PTR, CAA, SOA
- step: S4
action: Define proto/flashdns.proto
priority: P0
status: complete
complexity: small
component: flashdns-api
notes: |
ZoneService: CreateZone, GetZone, ListZones, UpdateZone, DeleteZone
RecordService: CRUD + BatchCreate/BatchDelete
~220 lines proto
- step: S5
action: DNS protocol scaffold
priority: P1
status: complete
complexity: medium
component: flashdns-server
notes: |
DnsHandler with UDP listener
Query parsing scaffold (returns NOTIMP)
Error response builder (SERVFAIL, NOTIMP)
gRPC management API (ZoneServiceImpl, RecordServiceImpl)
- step: S6
action: Integration test setup
priority: P1
status: complete
complexity: small
component: flashdns
notes: |
cargo check passes
cargo test passes (6 tests)
outcome: |
COMPLETE: 2025-12-08
S2-S6 complete (S1 spec still in progress via Aux).
Implementation scaffolding complete.
Final workspace structure:
- flashdns/Cargo.toml (workspace with 3 crates)
- flashdns-types: Zone, Record types (~450 lines)
- flashdns-api: proto (~220 lines) + lib.rs + build.rs
- flashdns-server: gRPC services + DNS UDP handler + main.rs
Tests: 6 pass
FlashDNS enters "operational" status (scaffold).
notes: |
DNS is foundational for service discovery.
After FlashDNS, only FiberLB (T010) remains for full scaffold coverage.
Pattern: spec (Aux) → scaffold (PeerB)