Preserve environment configuration ownership (#38678)

## Why

Environment attachments can either inherit configuration from their thread or
provide their own. Later thread setting updates must refresh inherited
configuration without overwriting attachment-owned permissions and capability
roots.

## What changed

- Resolve each attachment's configuration when it is selected and retain
  whether it came from the thread or the attachment owner.
- Apply subsequent thread configuration updates only to thread-owned
  attachments, while preserving ownership across snapshots and child threads.
- Keep the resolved configuration with the environment selection so runtime
  consumers use a single canonical value.

## Testing

- Extend remote-environment coverage to verify that thread-owned permissions
  follow thread updates while owner-provided read-only permissions remain in
  effect.
- Cover configuration inheritance, attachment replacement, and owner-configured
  capability roots.

GitOrigin-RevId: fe70c4be5f151432b69bf4b141e316faa89036ae
This commit is contained in:
sayan-oai authored and copyberry committed 2026-08-15 00:43:44 +00:00
1 parent 233739e76a
commit 22bf16a37e
23 files changed
+343 -192

No files matched your search

+1 -1
View File
@@ -448,7 +448,7 @@ impl Session {
.chain(
environments
.turn_environments()
.flat_map(|environment| environment.config.selected_capability_roots.clone()),
.flat_map(|environment| environment.config().selected_capability_roots.clone()),
)
.enumerate()
{