Skip to content

feat: TrialConfinement — a call confined to a disposable workspace composes mutation as Ephemeral - #37

Merged
rodrigoteamx merged 1 commit into
mainfrom
feat/trial-confinement
Aug 21, 2026
Merged

feat: TrialConfinement — a call confined to a disposable workspace composes mutation as Ephemeral#37
rodrigoteamx merged 1 commit into
mainfrom
feat/trial-confinement

Conversation

@rodrigoteamx

Copy link
Copy Markdown
Contributor

A third producer beside declared descents and the authority policy: a live confinement fact on CallSubject (workspace id, arguments digest, the bounds the runner IMPOSED, why). composeForCall() consults it after declared descents and lowers mutation to Ephemeral — what the call writes dies with the workspace — and nothing else: a copy isolates files, not the world, so externality, authority, reversibility and subject stay exactly as declared (greenhouse decisions/0068: zero descent on third_party). Like every producer it only lowers.

ProfileComposition::confinedByTrial() is the one fact a policy reads to know a call is confined — from the reductions, never from the effective profile alone.

First piece of the trial slice (greenhouse decisions/0069). Ships as command 0.18.0.

…mposes mutation as Ephemeral

A third producer beside declared descents and the authority policy: a live
confinement fact on CallSubject (workspace id, arguments digest, the bounds the
runner IMPOSED, why). composeForCall() consults it after declared descents and
lowers mutation to Ephemeral — what the call writes dies with the workspace —
and NOTHING else: a copy isolates files, not the world, so externality,
authority, reversibility and subject stay exactly as declared (greenhouse
decisions/0068: zero descent on third_party). Like every producer it only
lowers: an operation already at Ephemeral or None gets no reduction.

ProfileComposition::confinedByTrial() is the one fact a policy reads to know a
call is confined — from the reductions, never from the effective profile alone
(a temp-file op is also Ephemeral and confined to nothing).

Greenhouse decisions/0069.
@rodrigoteamx
rodrigoteamx force-pushed the feat/trial-confinement branch from 63734a0 to 753988e Compare August 21, 2026 03:27
@rodrigoteamx
rodrigoteamx merged commit 8f0ff81 into main Aug 21, 2026
2 checks passed
@rodrigoteamx
rodrigoteamx deleted the feat/trial-confinement branch August 21, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant