tasks: decompose Phase 1 core modifications into 12 atomic implementation tasks
Phase 1 of the integration plan modifies alknet-core to support the architectural changes from Phase 0 ADRs and specs. Decomposed into dependency-ordered tasks across config split, identity, forwarding policy, OperationEnv, interface abstraction, and NAPI reload API. Critical path: config-split → identity → forwarding → wire-into-handler → interface-trait → ssh-interface-extraction → review. Two highest-risk tasks (interface-trait-definition, ssh-interface-extraction) are split from §1.8 per the integration plan's note that it may need sub-phases. OperationEnv is split into types and runtime per Phase 1 local-dispatch-only constraint.
This commit is contained in:
44
tasks/core/config-service-irpc.md
Normal file
44
tasks/core/config-service-irpc.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
id: core/config-service-irpc
|
||||
name: Implement ConfigProtocol irpc service and ConfigServiceImpl
|
||||
status: pending
|
||||
depends_on:
|
||||
- core/config-static-dynamic-split
|
||||
scope: narrow
|
||||
risk: low
|
||||
impact: component
|
||||
level: implementation
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
Define `ConfigProtocol` irpc service enum and `ConfigServiceImpl` behind the `irpc` feature flag, per ADR-030 and configuration.md.
|
||||
|
||||
`ConfigServiceImpl` wraps `ArcSwap<DynamicConfig>` and provides access to forwarding policy, rate limits, and reload capability. In Phase 1, direct `ConfigReloadHandle::reload()` is sufficient for minimal deployments. The irpc service provides the same functionality for production deployments.
|
||||
|
||||
**Key additions**:
|
||||
- `ConfigServiceImpl` struct with `forwarding_policy()`, `rate_limits()`, `reload()` methods (always available, not feature-gated)
|
||||
- `ConfigProtocol` irpc enum behind `irpc` feature: `GetForwardingPolicy`, `GetRateLimits`, `ReloadForwarding`, `ReloadRateLimits`
|
||||
|
||||
**What stays the same**: Direct `ConfigReloadHandle::reload()` is the primary API. `ConfigServiceImpl` is a thin wrapper over ArcSwap, also always available. The irpc service is additive.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [ ] `ConfigServiceImpl` struct defined in `crates/alknet-core/src/config/config_service.rs` with methods per configuration.md
|
||||
- [ ] `ConfigServiceImpl` reads from `ArcSwap<DynamicConfig>` and returns `Arc<ForwardingPolicy>`, `Arc<RateLimitConfig>`
|
||||
- [ ] `ConfigProtocol` enum defined behind `irpc` feature flag
|
||||
- [ ] Without `irpc` feature, `ConfigServiceImpl` is available for direct use
|
||||
- [ ] With `irpc` feature, `ConfigProtocol` wraps `ConfigServiceImpl`
|
||||
|
||||
## References
|
||||
|
||||
- docs/architecture/configuration.md — ConfigServiceImpl, ConfigProtocol
|
||||
- docs/architecture/decisions/030-static-dynamic-config-split.md — ADR-030
|
||||
|
||||
## Notes
|
||||
|
||||
> To be filled by implementation agent
|
||||
|
||||
## Summary
|
||||
|
||||
> To be filled on completion
|
||||
Reference in New Issue
Block a user