Add explicit OpenProse context envelope#100
Open
rawwerks wants to merge 3 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This adds an explicit worker-frame context boundary for OpenProse runs.
### Contextas a service-local, read-only allow-list separate from### Requires.PROSE_OPENPROSE_ROOT, activation id, and explicit OpenProse skill-root override.Why This Shape
### Requiresand### Contextnow have different jobs.### Requiresis the task interface: values the service needs in order to run.### Contextis a read-only background allow-list: material the VM is allowed to place inside that worker frame. If requested context is missing, the worker should fail closed or produce missing-context evidence instead of reconstructing it from ambient parent context.That gives OpenProse a cleaner boundary for multi-agent systems: the parent can have broad context, private scratch, sibling outputs, and operational details, while each worker receives only the task, declared inputs, declared context, workspace path, and output instructions it needs.
To make that boundary auditable, the VM writes a worker launch envelope before spawning a worker. The envelope records what classes of input were included and which classes were intentionally absent. This is stronger than relying only on the worker's final answer, because it captures the launch boundary before the model runs.
Validation
The committed CLI tests cover the public contract surface:
### Contextdocumentation, worker-launch-envelope documentation, active-root bootstrap instructions, shared Codex/Claude Code harness routing, explicit skill-root overrides, and fail-closed invalid override behavior.In addition to those committed checks, I tested the shape with a local context-boundary run that deliberately mixed safe context with private parent-only material.
The run checked that:
I also ran polarity controls for the envelope rule:
Those checks are why this PR uses both a declared
### Contextsection and a launch envelope: the section expresses intent, and the envelope proves what actually crossed the worker boundary.The CLI bootstrap path is shared by the Codex and Claude Code harness adapters. This PR updates that shared path so forwarded runs receive the active OpenProse root, activation id, and skill-root override consistently. The focused CLI tests cover both harness routing and the shared bootstrap contract; the local runtime proof exercised the Codex harness path.
Local Checks
vitest --run tests/skills/open-prose.test.tstsc -p tsconfig.json --noEmittsc -p tsconfig.build.jsonubsscan on changed files