Add Aspire-native Chaos integration design - #19160
Brent Rusinow (brrusino) wants to merge 36 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…tics Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19160Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19160" |
Adam Ratzman (adamint)
left a comment
There was a problem hiding this comment.
I think the Azure profiles need another design pass before this can be implemented: the startup, consent, routing, and authentication assumptions currently conflict. I left the concrete blockers inline.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed all eight findings in |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Follow-up from the proxyless endpoint discussion: |
|
Adam Ratzman (@adamint) I think your summary comment went out with the same batch as the inline ones, so it probably predates the revisions. I took a pass at all eight in Two I don't want to represent as fixed, since they're positions I took rather than problems I solved: Cosmos enforceability — the spec asks that no outbound Cosmos path exist outside the mediated Gateway listener and treats that as a gate, but it doesn't say how we'd get there. I left it as a stated obligation instead of claiming DCP can detect a bypassing client, since it can't. If that's not the right way to carry an open question in a spec here, happy to change it. MCP consent — I framed the boundary as "an actor authorized to invoke existing resource commands may invoke this mutating command" and explicitly disclaimed per-principal auth. CLI No rush on my end, and I'm not assuming this is ready — mostly want to know whether the shape is right before anyone spends more time on it. Also still finding my footing in this repo, so if I've got conventions wrong anywhere, tell me and I'll fix it. |
Description
Adds the design specification for an Aspire-native, runtime-controlled Chaos integration backed by the existing proxy layer.
The design keeps Chaos out of AppHost source and publish output. Applying a policy through the CLI, Dashboard/MCP, or
Aspire.Hosting.Testingis the explicit Run-mode consent boundary. It defines:http/v1,cosmos-gateway/v1,storage/v1, andapp-configuration/v1.The MVP requires identical profile schemas, fault semantics, and eligibility behavior whether an upstream is emulated or deployed to Azure. A location-specific failure blocks MVP release rather than producing an emulator-only subset.
Validation included Markdown structure and table checks, repository citation validation, contradiction searches,
git diff --check, and independent architecture reviews.Security considerations
This is a design-only change and does not open listeners or alter runtime behavior. The proposed implementation would terminate local TLS and mediate requests that can contain production-capable bearer tokens, SAS values, SharedKey authorization, certificates, and decrypted content. The specification requires explicit real-resource consent, validated trust on both proxy legs, process isolation, no credential/header/body logging, bounded plaintext lifetime, and loud rejection when those guarantees cannot be met. The implementation will require threat modeling and security review.
Fixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?