From 4b3d4883961a000857174a1233a082b400879f85 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Sat, 14 Nov 2026 06:16:00 -0800 Subject: [PATCH 1/2] Name a store operation in the Engine's list of effects The definition of the Engine in `AGENTS.md` and the paragraph on how the parts fit together in `README.md` each ended the list of what a run asks its caller for with "a file outside a prelude's install". Both now end the list with "a store operation", because every store call of a run is an effect, and a Pack prelude makes no store call while it installs. Plan: runvil-harness/plan/2026-11-14-1-private-store.plan.md --- AGENTS.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 3bf58439f..70457a360 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,7 @@ Multi-crate Rust workspace for the tooling that builds the Runvil installers and Seven terms have exactly one meaning each, everywhere in this repository: code comments, docs, rulebooks, and plans. Write them capitalized. -- **Engine**: the `runvil-*` crates. The Engine parses a prompt and steps a run. Whenever a run needs a model reply, a Pack's render of the tools a section offers it, a Pack tool's result, a timer, or a file outside a prelude's install, the Engine emits an effect and waits for its caller to answer it. In production the caller is the Harness. +- **Engine**: the `runvil-*` crates. The Engine parses a prompt and steps a run. Whenever a run needs a model reply, a Pack's render of the tools a section offers it, a Pack tool's result, a timer, or a store operation, the Engine emits an effect and waits for its caller to answer it. In production the caller is the Harness. - **Harness**: the `runvil` crate, which is the one crate a Host depends on, and the `harness-*` crates. The Harness steps the Engine, performs every effect, returns each answer, and records every run through the recorder the Host supplies. Production code runs prompts only through the Harness. - **Host**: an application that runs prompts through the Harness, such as Workshop or Papergate. The Host makes every policy decision. It may also use the Engine's parser and types to read prompts and show events. - **Pack**: code which installs an optional native prelude, an optional Lua prelude, and zero or more tools. diff --git a/README.md b/README.md index 7a84105de..45df9672c 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ The `args:` key declares the one argument the prompt takes, a required string na ## How it fits together -The Engine and the Harness are Rust libraries. The Engine parses a prompt and steps through it, and whenever the run needs a model reply, a Pack's render of the tools a section offers, a Pack tool's result, a timer, or a file outside a prelude's install, it asks for one and waits. The Harness answers each of those requests and records the run. A Host is any application that runs prompts through the Harness. Workshop is one, and your own program becomes one when it embeds the Harness. The Engine and the Harness are developed in their own repository, [cppalliance/runvil-harness](https://github.com/cppalliance/runvil-harness). +The Engine and the Harness are Rust libraries. The Engine parses a prompt and steps through it, and whenever the run needs a model reply, a Pack's render of the tools a section offers, a Pack tool's result, a timer, or a store operation, it asks for one and waits. The Harness answers each of those requests and records the run. A Host is any application that runs prompts through the Harness. Workshop is one, and your own program becomes one when it embeds the Harness. The Engine and the Harness are developed in their own repository, [cppalliance/runvil-harness](https://github.com/cppalliance/runvil-harness). The Gateway is the one process that holds model credentials, so no other process ever sees a vendor key. It serves an OpenAI-compatible API and routes each request to a cloud provider or to a model running on your own machine. It also provides web search, speech-to-text, text-to-speech, and a settings page in your browser, and you can run it on its own, on a desktop or a server. It is developed and released separately, in [cppalliance/runvil-gateway](https://github.com/cppalliance/runvil-gateway). From 48b419be889058eceee16938ab371a1f240a722f Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Sat, 14 Nov 2026 07:35:48 -0800 Subject: [PATCH 2/2] Build the installers from Workshop at `623eb7aa` `rev` in `[workspace.metadata.workshop]` names the Workshop commit `623eb7aa33c84fb3ceb7fc1628845120f607dfb7`, which is seven commits later than the one it named. Workshop at that commit has this workspace's version and toolchain channel, so neither changes here. - `rev` is the one line that changes. - The one test that reads a real Workshop checkout ran against that commit and passes. No installer was built on this machine for the change. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 0999f1470..0acb31097 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ libraries = [{ git = "https://github.com/cppalliance/dylints", rev = "982b297ede # differs from this workspace's. [workspace.metadata.workshop] git = "https://github.com/cppalliance/runvil-workshop" -rev = "e32d4caaaa60ad03d47fb807daa5d0d4b2c80ec4" +rev = "623eb7aa33c84fb3ceb7fc1628845120f607dfb7" [workspace.lints.rust] unsafe_code = "deny"