- 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)
113 lines
3.2 KiB
YAML
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)
|