Skip to content

Commit b76289e

Browse files
committed
fix(tools): compile rss from immutable snapshots
Compile from_file against owned snapshot bytes materialized into a private 0700 sandbox, cache and expose that digest on AgentRunner, and publish the service cache only when the postcheck digest still matches.
1 parent a836548 commit b76289e

13 files changed

Lines changed: 888 additions & 143 deletions

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ placeholder route is advertised.
5858
| Observability (A9): bounded metrics registry, `GET /metrics`, structured terminal tracing | Implemented (see [docs/deployment.md](docs/deployment.md)) |
5959
| Provider protocol adapters (OpenAI Chat/Responses, Anthropic Messages, provider profiles) | **Partial — blocked by core (A3)**. Wire building, standard-shape guard, marker-preservation, and structured provider errors are green; buffered response parsing, streaming, and the Responses/Anthropic adapters stay typed `not_implemented` stubs until core compiler defects are fixed. See [plans/2026-08-13_a3-provider-core-blocker.md](plans/2026-08-13_a3-provider-core-blocker.md). |
6060
| RSS serial loop + durable compaction policies (A5) | Serial loop is wired into the library `AgentService` worker via bundled `rss/agent/main.rss`. Compaction policies remain implemented and tested (`rss/agent/compact.rss`). OpenAI-compatible buffered/streaming adapters stay A3-blocked; the gateway binary still runs `RUSTSCRIPT_AGENT_SCRIPT` and does not add an OpenAI-compatible inference path. See [plans/2026-08-13_a5-scope-split.md](plans/2026-08-13_a5-scope-split.md). |
61-
| Native coding tools + workspace-confined loop | Implemented for the library worker: `read_file`, `search_files`, `write_file`, `patch`, `terminal`, `process` run serially through the native registry. Local E2E: `cargo test --test coding_agent_e2e_tests` and `cargo test --test coding_agent_edge_e2e_tests`. See [docs/configuration.md](docs/configuration.md). Parallel tools remain excluded (A6). |
61+
| RSS coding tools + workspace-confined loop | Implemented for the library worker: `read_file`, `search_files`, `write_file`, `patch`, `terminal`, `process` run serially through `rss/tools/dispatch.rss`. Local E2E: `cargo test --test coding_agent_e2e_tests` and `cargo test --test coding_agent_edge_e2e_tests`. See [docs/configuration.md](docs/configuration.md). Parallel tools remain excluded (A6). |
6262
| Harness and approval machinery (A4) | Not implemented (excluded from the current milestone scope); approval **repository** CRUD exists, there is no approval flow driving runs |
6363
| Parallel tools and subagents (A6) | Not implemented (excluded from the current milestone scope) |
6464
| Scheduled / durable job execution | **Not implemented (explicitly excluded)**. Job CRUD, pause/resume, and latest-output routes exist, but there is no scheduler; `POST /api/jobs/{id}/run` is intentionally absent and answers `404`. |

‎docs/configuration.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ Built-in RSS registry tools, in registry order:
205205
| `search_files` | coding | read | Bounded workspace search. |
206206
| `write_file` | coding | write | Write complete workspace file contents. |
207207
| `patch` | coding | write | Minimal unique-string replacement. |
208-
| `terminal` | process | process | Direct `argv` execution; no shell command string. |
209-
| `process` | process | process | Background/control sibling of `terminal`. |
208+
| `terminal` | process | execute | Direct `argv` execution; no shell command string. |
209+
| `process` | process | execute | Background/control sibling of `terminal`. |
210210

211211
Parallel tool calls are rejected (`unsupported_parallel`). Subagents and A6
212212
parallel fan-out are out of scope.
@@ -257,7 +257,7 @@ requests that are not retry-safe, lack a fingerprint, leak secret keys, or
257257
already have a later tool effect fail closed (`interrupted_provider`) with no
258258
provider or tool effect.
259259

260-
Native dispatch is durable-first. Assistant `tool_call` parents and user
260+
RSS dispatch is durable-first. Assistant `tool_call` parents and user
261261
`tool_result` messages carry `parent_message_id` and monotonic `ordinal`
262262
values. A missing or name-mismatched parent fails closed (`missing_tool_parent`)
263263
and does not run the executor. Replaying an already durable `ToolResult` does

‎src/lib.rs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ pub use runtime::rss_runner::{
3939
AgentConfig, AgentError, AgentRunner, MAX_AGENT_SOURCE_BYTES, RUN_EPOCH_CHECK_INTERVAL,
4040
RUN_EPOCH_DEADLINE_TICKS, Result, RunCancellation, RunDeliveryError, RunError, RunEventSink,
4141
RunnerPrepareFault, bundled_agent_main_path, bundled_tool_entries, bundled_tool_registry,
42+
set_after_snapshot_hook,
4243
};
4344
pub use runtime::{
4445
AgentHostBridges, AgentProviderHost, ControlCheckHook, ScriptedProvider, agent_host_catalog,

‎src/runtime/mod.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ pub use agent_host::{
1111
pub use rss_runner::{
1212
AgentConfig, AgentError, AgentRunner, MAX_AGENT_SOURCE_BYTES, RUN_EPOCH_CHECK_INTERVAL,
1313
RUN_EPOCH_DEADLINE_TICKS, Result, RunCancellation, RunDeliveryError, RunError, RunEventSink,
14-
RunnerPrepareFault,
14+
RunnerPrepareFault, set_after_snapshot_hook,
1515
};

0 commit comments

Comments
 (0)