Files
alknet/tasks/architecture/spec-configuration.md
glm-5.1 19b3d3a078 docs: write Phase 0 architecture foundation — ADRs 026-034, spec docs, and task updates
Phase 0a — ADRs (9 new):
- ADR-026: Transport/interface separation (three-layer model)
- ADR-027: Crate decomposition (core, secret, storage, flowgraph, napi, CLI)
- ADR-028: Auth as irpc service (AuthProtocol behind feature flag)
- ADR-029: Identity as core type (Identity + IdentityProvider in alknet-core)
- ADR-030: Static/dynamic config split (ArcSwap, ConfigReloadHandle)
- ADR-031: Forwarding policy (rule-based allow/deny, TransportKind-aware)
- ADR-032: Event boundary discipline (domain, irpc, call protocol boundaries)
- ADR-033: OperationEnv universal composition (three dispatch paths)
- ADR-034: Head/worker terminology (replace hub/spoke)

Phase 0b — New spec documents (7):
- identity.md, services.md, interface.md, configuration.md,
  storage.md, flowgraph.md, secret-service.md

Updated existing docs:
- auth.md: reference identity.md for canonical definitions, add AuthProtocol
- open-questions.md: resolve OQ-12, OQ-16, OQ-18, OQ-22, OQ-23-25
- README.md: add all new docs, ADRs 026-034

Marked 19 architecture tasks as completed.
2026-06-07 09:32:58 +00:00

63 lines
3.2 KiB
Markdown

---
id: architecture/spec-configuration
name: Promote configuration.md from research to architecture spec
status: completed
depends_on:
- architecture/adr-030-static-dynamic-config-split
- architecture/adr-031-forwarding-policy
- architecture/adr-028-auth-irpc-service
scope: moderate
risk: medium
impact: phase
level: implementation
---
## Description
Promote `docs/research/configuration.md` to `docs/architecture/configuration.md` as a proper architecture spec document. The research doc is nearly spec-ready — this task is primarily cleanup, restructuring, and aligning with ADR decisions.
**Source**: `docs/research/configuration.md` (651 lines, well-analyzed)
**Key cleanup items**:
1. Remove duplicate "## Problem" heading (lines 20-21 both say `## Problem`)
2. Resolve open questions per ADRs: OQ-12 (global rules + principal matching via IdentityProvider), OQ-13 (no file watching, confirmed), OQ-14 (ArcSwap, confirmed), OQ-16 (TransportKind match in ForwardingRule), OQ-18 (IdentityProvider owns scopes)
3. Remove inline decision rationale — reference ADR-030, ADR-031, ADR-028
4. Remove inline open questions — reference open-questions.md OQ numbers
5. Add YAML frontmatter: `status: draft`, `last_updated: <date>`
6. Restructure to follow established spec format (What, Why, Architecture, Constraints, Open Questions, Design Decisions)
7. Update terminology: head/worker (already done in research doc)
8. Reconcile ADR-011: TOML config file amends ADR-011 (convenience layer), doesn't supersede it
9. Remove research-only sections that are exploration/analysis — keep only the decisions and their architecture
**What stays**: StaticConfig/DynamicConfig split, ArcSwap model, ForwardingPolicy design, multi-transport listeners, ConfigService, NAPI reload API, TOML format, CLI vs programmatic behavior table
## Acceptance Criteria
- [ ] `docs/architecture/configuration.md` exists with YAML frontmatter (`status: draft`)
- [ ] No duplicate "## Problem" heading
- [ ] All inline decision rationale replaced with ADR references (030, 031, 028)
- [ ] All inline open questions replaced with OQ references
- [ ] OQ-12 resolved: global rules + principal matching, reference ADR-031
- [ ] OQ-16 resolved: TransportKind match, reference ADR-031
- [ ] OQ-18 resolved: IdentityProvider owns scopes, reference ADR-029
- [ ] TOML config file positioned as amending ADR-011, not replacing programmatic API
- [ ] Follows spec format: What, Why, Architecture, Constraints, Open Questions, Design Decisions
- [ ] Consistent head/worker terminology throughout
- [ ] `docs/architecture/README.md` updated to include configuration.md in architecture docs table
- [ ] `docs/research/configuration.md` retains its content (not deleted — it's research source material)
## References
- docs/research/configuration.md — source material to promote
- docs/architecture/decisions/030-static-dynamic-config-split.md — ADR to reference
- docs/architecture/decisions/031-forwarding-policy.md — ADR to reference
- docs/architecture/decisions/028-auth-irpc-service.md — ADR to reference
- docs/architecture/decisions/011-no-ssh-config-programmatic-api.md — amended by TOML config
## Notes
> To be filled by implementation agent
## Summary
> To be filled on completion