62f0024707
* .NET: Make Foundry Hosting resilient to missing user identity in local runs AgentFrameworkResponseHandler threw InvalidOperationException (surfaced as a 500 on every request) when the isolation-key provider returned null, which always happens locally because the platform x-agent-user-id header is absent. Running a hosted image outside Foundry therefore failed out of the box. The handler now branches on FoundryEnvironment.IsHosted: hosted stays strict (null identity is still a hard error), but non-hosted (local docker run / dotnet run) tolerates a null identity - per-user isolation is simply not triggered, the request proceeds with userId null (no partition), and no hosted context is stamped or validated. Because local runs no longer need a fallback, the sample-side DevTemporaryLocalUserIdProvider and AddDevTemporaryLocalContributorSetup are removed from Hosted_Shared_Contributor_Setup and all sample Program.cs files. To simulate distinct users locally, send an x-agent-user-id request header; the default provider reads it exactly as it reads the platform-injected value. The Memory sample smoke script now drives alice/bob against one container via that header. AGENT_NAME defaults added to Hosted-ChatClientAgent and Hosted-MemoryAgent so a hosted deploy (where AGENT_* is a reserved env var) does not crash at startup. Updates the two affected unit tests to assert the local-success path and amends ADR 0031. * Address review: correct isolation-guarantee and Memory-sample local docs - AgentFrameworkResponseHandler: note the null/local case is unscoped/shared, not fully partitioned per user. - HostedSessionIsolationKeyProvider XML docs: phrase the non-null UserId rule as a constraint on the returned-context case, since null is now allowed locally. - Hosted-MemoryAgent: the PerUser() memory scope requires a resolved user, so a local run needs an x-agent-user-id header; corrected the Program.cs comment and README (removed the inaccurate "shared bucket locally" claim). - Test: assert absence of any u-* per-user directory via a wildcard search rather than checking for a literal "u-" directory.