Phase 2 completes the interface-to-protocol bridge and adds core types that external crates depend on. The 8 tasks are organized into 5 generations with clear dependencies: - Gen 1: StreamInterface/MessageInterface trait split (must go first) - Gen 2: SshSession bridge, RawFraming impl, CredentialProvider (parallel) - Gen 3: API keys in DynamicConfig (depends on CredentialProvider) - Gen 4: ListenerConfig HTTP/DNS stubs + axum scaffold - Gen 5: Review gate before Phase 3 Key design decisions: - 2.4a/2.4b split: SecretStoreCredentialProvider deferred to Phase 3 - API keys (2.6) must land before axum scaffold (2.7) - ListenerConfig (2.5) must land before axum scaffold (2.7) - Gen 2 tasks are parallelizable (separate modules)
3.4 KiB
3.4 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| review-core-bridge-phase2 | Review all Phase 2 changes for spec conformance and prepare for Phase 3 | pending |
|
narrow | low | phase | review |
Description
Review all Phase 2 implementation for spec conformance, architectural consistency, and completeness before Phase 3 crate development begins. Per integration plan section 4.5, a second doc sync should capture any deviations between spec and implementation.
This review covers:
- Spec conformance: Do implementations match the architecture docs and ADRs (035, 036, 037)?
- Layer boundary discipline: Does every component belong to exactly one layer? No call protocol logic in the interface layer, no interface logic in the transport layer.
- Terminology consistency: head/worker everywhere (no hub/spoke), StreamInterface/MessageInterface (no bare "Interface" trait), consistent naming.
- Test coverage: Do all Phase 2 tasks have tests that verify acceptance criteria?
- No circular dependencies: alknet-core doesn't depend on alknet-secret, alknet-storage, or alknet-flowgraph.
- Doc sync: Update architecture docs to reflect Phase 2 implementation state. Specifically:
interface.md— StreamInterface/MessageInterface split, InterfaceRequest/InterfaceResponseauth.md— API keys, resolve_from_token() changesconfiguration.md— DynamicConfig additions (api_keys, credentials)call-protocol.md— SshSession bridge, RawFraming auth flow- Any deviations between spec and implementation should be documented
Acceptance Criteria
- All Phase 2 tasks have acceptance criteria verified (each task's AC checklist is complete)
- Layer boundaries are clean: interface layer produces/consumes
InterfaceEvent; protocol layer handlesEventEnvelope; transport layer provides byte streams - No
Interfacetrait references remain (all renamed toStreamInterface) - No
TransportKind::Dnsin the enum (DNS is aMessageInterface) Cargo.tomldependency check: alknet-core has no circular deps on external crateshttpfeature flag correctly gates axum dependency- Architecture docs updated for Phase 2 state:
interface.mdreflects StreamInterface/MessageInterface splitauth.mdreflects API keys in DynamicConfigconfiguration.mdreflects new DynamicConfig sectionscall-protocol.mdreflects functional SshSession bridge
- All tests pass:
cargo test --all-features - No compiler warnings on Phase 2 code
taskgraph parallel --path tasks/integration/phase2shows all tasks completed
References
- docs/research/integration-plan.md — Phase 4.5 doc sync
- All Phase 2 ADRs: 035, 036, 037
- All Phase 2 implementation tasks (2.1–2.7)
- docs/architecture/ — architecture docs to update
Notes
This is a quality gate before Phase 3. The review should be thorough but shouldn't block on minor documentation phrasing. Focus on structural conformance: are layers respected, are traits correct, are dependencies acyclic?
If any deviations between spec and implementation are found, document them in the relevant architecture doc with a "Deviation from spec" note explaining why.
Summary
To be filled on completion