# Concelier Advisory Chunks API (Paragraph-Anchored) ## Module Concelier ## Status IMPLEMENTED ## Description REST API endpoint serving paragraph-anchored advisory chunks with tenant enforcement, AdvisoryRead scopes, and filters for sections/formats/limits/minLength. Designed for Advisory AI to pull deterministic paragraph anchors plus source metadata. ## Implementation Details - **Modules**: `src/Concelier/StellaOps.Concelier.WebService/` - **Key Classes**: - `AdvisoryChunkBuilder` (`src/Concelier/StellaOps.Concelier.WebService/Services/AdvisoryChunkBuilder.cs`) - builds paragraph-anchored chunks from advisory content - `AdvisoryChunkCache` (`src/Concelier/StellaOps.Concelier.WebService/Services/AdvisoryChunkCache.cs`) - in-memory cache for advisory chunks - `MessagingAdvisoryChunkCache` (`src/Concelier/StellaOps.Concelier.WebService/Services/MessagingAdvisoryChunkCache.cs`) - messaging-backed cache implementation - `AdvisoryChunkOptions` (`src/Concelier/StellaOps.Concelier.WebService/Options/ConcelierOptions.cs`) - configuration for chunk sizes, limits, and formats - **Interfaces**: `IAdvisoryChunkCache` - **Source**: 2025-11-07-concelier-advisory-chunks.md ## E2E Test Plan - [ ] Call the advisory chunks endpoint with a valid advisory ID and verify paragraph-anchored chunks are returned - [ ] Verify tenant enforcement: request chunks without AdvisoryRead scope and confirm 403 response - [ ] Verify section filter: request only specific sections and confirm only matching chunks are returned - [ ] Verify minLength filter: set minLength and confirm short paragraphs are excluded - [ ] Verify caching: request same advisory chunks twice and confirm second response is served from cache