Repository navigation
fix: complete V3 execution isolation and release candidate validation - #328
EvanProgramming wants to merge 193 commits into
Conversation
Preserve canonical tool constraints through native JSON Schema with shared strict validation. Keep the existing typed OpenAPI descriptors and require the verified SDK floor. Adapt original baseline Auto configuration and native stream fixtures; verify the bounded plan acceptance continuation without granting execution or completion.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1fd3f270ef
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| data = receipt.tool_result.data if receipt.tool_result is not None else None | ||
| if (isinstance(data, dict) and isinstance(data.get("content"), str) | ||
| and data.get("truncated") is False): | ||
| read_content = data["content"] | ||
| else: | ||
| criterion_status = "unavailable" |
There was a problem hiding this comment.
Preserve complete read evidence before archiving tool output
When a successful read_file result exceeds the 12,000-character serialized-output threshold, _make_execution_receipt replaces its data with an artifact reference before this check runs. Consequently, even a complete read with a matching acceptance predicate lacks content and truncated here and is marked unavailable. For example, a roughly 7 KB file containing the required text cannot satisfy its Working Plan read criterion, and reading the artifact cannot satisfy the original read_file contract either. Retain the trusted complete content for predicate evaluation separately from the bounded provider/journal representation.
Useful? React with 👍 / 👎.
| if sum(handle.process.poll() is None for handle in self._handles.values()) >= 32: | ||
| raise RuntimeError("session process handle limit reached") |
There was a problem hiding this comment.
Bound retained handles when allowing completed-process replacement
In a long-lived session that repeatedly launches background commands, counting only running processes removes the previous bound on retained handles: every completed handle remains in _handles, and neither completion nor close() evicts it. Each handle retains up to one million characters from each output stream, so sequential commands can now grow session memory without limit despite never approaching 32 concurrent processes. An isolated run confirmed that 40 completed commands leave 40 retained handles and zero active processes. Add bounded retention or eviction for completed handles alongside the concurrent-process limit.
Useful? React with 👍 / 👎.
Completes the V3 candidate across native provider execution, working plans, scoped authorization, persistent tool evidence and child-agent coordination. V2/V3 evaluations now run behind a trusted parent that protects original tests, binds single-use execution authorization, isolates actors and cleans their processes. Physical source facts and recovery episodes are verified independently of model prose and legacy workflow heuristics.
The current signed candidate is
1fd3f270ef17aa4cbb5cc669a1cf8c105bfe1b4a. All 13 offline release gates have exact-candidate evidence and owner signatures:Merge remains pending the four original model gates: a fresh 180-row matched campaign, 54-row routing evaluation, 36-row model-routing evaluation and independent review of the seven empirical requirements. These use Panstar native Responses with the built-in Auto selector, inexpensive
gpt-6-sol/gpt-6.1-solroles and complete cumulative cost accounting. Original statistical, safety, usage and protocol thresholds remain unchanged. Historical incomplete runs are retained and are not pooled into current results.Credentials and runtime data are excluded. No tag, draft/public Release, package upload or preview publisher is created by this change. Main must advance non-forcibly to the same fully accepted SHA only after final review.