Summary
Introduce a query-time Chain of Responsibility so resource reads are resolved through explicit handler stages instead of ad-hoc branching. This enables consistent behavior for standard kinds and extension-defined kinds.
In Scope
- Define a query handler pipeline with ordered stages:
- schema/query-shape guard
- standard kind resolver (core kinds)
- extension resolver (WASI-backed custom kinds)
- reference resolution/enrichment stage
- Implement deterministic stage contracts (input/output/error model) and short-circuit rules
- Add observability per stage (latency, hit-rate, failures)
- Support per-kind routing rules so standard and custom kinds can coexist
- Add tests covering core kind resolution, extension fallback, and mixed-reference resolution
Out of Scope
- Dynamic GraphQL schema generation/stitching mechanics
- Marketplace UX for extensions
- Mutating write-time admission behavior
Acceptance Criteria
Implementation Notes
A handler chain makes query behavior explicit and composable. It avoids hard-coding kind checks across resolvers and gives a stable extension seam for non-core kinds. The design should remain level-triggered: each handler receives the current object context and either handles, enriches, or passes onward.
Dependencies
Tracking
- Area:
infra
- Priority:
p2 – high
- Target Milestone / Release: TBD
Summary
Introduce a query-time Chain of Responsibility so resource reads are resolved through explicit handler stages instead of ad-hoc branching. This enables consistent behavior for standard kinds and extension-defined kinds.
In Scope
Out of Scope
Acceptance Criteria
Implementation Notes
A handler chain makes query behavior explicit and composable. It avoids hard-coding kind checks across resolvers and gives a stable extension seam for non-core kinds. The design should remain level-triggered: each handler receives the current object context and either handles, enriches, or passes onward.
Dependencies
Tracking
infrap2 – high