Repository navigation
Conversation
`OpSink` is the alias for the observer closure that `VfsRefBuilder::on_op` accepts as `impl Fn(OpEvent<'_>)`. No crate outside `runvil-vfs` names it, in production or in tests, and it is not in the facade, so the root re-export only widened the crate's surface. It narrows to `pub(crate)` because `Volume`, `VfsRef::from_router`, and `VfsRefBuilder` still name it. - `lib.rs` re-exports `OpEvent` and `Origin` only, and `observe.rs` declares `OpSink` as `pub(crate)`. - This removes surface and adds none. No replacement facility is needed, because the public builder never took the alias. - `crates/runvil/public-api.txt` does not change. Design: removes surface-growth @ crates/runvil-internal/vfs/src/observe.rs::OpSink boundary: pub Deferred: Moving the test-only `runvil-lua` exports behind `test-support` waits, because the definitions need the same `cfg` and dead code fails the gate. Plan: vibe/2026-11-06-1-engine-surface-trims.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`parse_error` was one call to `runvil_types::error::failure` with its two arguments passed on unchanged. The scheduler's `check_start` and one test in `runvil-engine` called it, and both now call `failure` directly, as the rest of `runvil-engine` already does. `detail` in `runvil-prompt` goes from six items to five, and `detail.rs` no longer imports `ErrorCode`. - `check_start` builds the missing-version failure with `failure(ErrorCode::StructureInvalid, ...)` and still hands it to `with_prompt_context`, so the failure is the same value with no location. - `a_parse_failure_run_raises_names_the_prompt_and_its_file` builds its input with `runvil_types::error::failure`. - This removes a facility and adds none. `failure` was already the facility, and the forwarder only renamed it. Design: removes shim @ crates/runvil-internal/prompt/src/detail.rs::parse_error deps: Error,ErrorCode boundary: pub Plan: vibe/2026-11-06-1-engine-surface-trims.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`install_normalize_failure` was `lua.create_function(normalized)`, and `install_shims` was its only caller. `install_shims` now makes that function itself with the same `map_err(error::lua)`, and `error_value` re-exports `normalized` alone. `normalized` already carries the contract the installer's doc restated, what the `normalize_failure` capture returns, and the `error_value` module doc now names it where it named the installer. - `install_shims` builds the capture with `lua.create_function(normalized)` and keeps the `normalize_failure` local that the shim chunk receives. - `error-value-classify.rs` drops the installer and its `Function` import. Nothing else in the crate changes. - This removes a function and adds none. No replacement facility was needed, because `normalized` is the capture's whole body. - `coro::block_guard` stays. Its registry key is private to `coro.rs`, which stores and reads it, so inlining it into `vm/run.rs` would widen that key to move three lines. Design: removes pure-function @ crates/runvil-internal/lua/src/error-value-classify.rs::install_normalize_failure deps: Lua Deferred: `coro::block_guard` is not inlined, because its registry key would need `pub(crate)` for one caller. Plan: vibe/2026-11-06-1-engine-surface-trims.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plan: vibe/2026-11-06-1-engine-surface-trims.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Three removals, one commit each. No behavior change, no replacement facility needed. The plan is
vibe/2026-11-06-1-engine-surface-trims.md.What and why
Stop exporting OpSink from runvil-vfs: zero users outside the crate, in production or in tests, and it is not in the facade orpublic-api.txt. It narrows topub(crate)because three in-crate items still name it.Delete prompt::detail::parse_error: a forwarder, one call torunvil_types::error::failurewith its arguments unchanged. Its two callers (Scheduler::check_startand one test) now callfailuredirectly.Inline install_normalize_failure into install_shims: a single caller, and the body waslua.create_function(normalized).normalizedalready carries the contract.Tests and gate results
No new tests, because no behavior changes. The existing tests cover each call site.
All gates from
AGENTS.md"Verification" pass on this branch with no new warnings: both clippy runs withCARGO_BUILD_WARNINGS=deny, fmt, both doc runs, both nextest runs,xtask api --check(the pinned nightly, sopublic-api.txtis unchanged),cargo test -p build-xtask, anddocs-claims.mjs. Results match unmodified master8bb2b2ef.The three commits also apply cleanly on top of #200, and
install_shimsstays under the new 100-line clippy limit after the inline (checked by merge, not a full gate run on #200).One thing to know when running the main nextest suite on Windows with the repo and the temp directory on different drives:
build-workshop::cancellationfails withCrossesDevicesbecause it renames a pre-staged sidecar into the temp directory. It fails the same way on unmodified master and is unrelated to this change. WithTEMPon the repo's drive, all 4168 tests pass on master and on this branch.Left out on purpose
coro::block_guardis not inlined. Its registry key is private tocoro.rs, which stores and reads it, so inlining at the one caller invm/run.rswould make the keypub(crate)to save three lines.runvil-luaexports (ErrorField,error_fields,RESERVED_NAMES) behindtest-support. The definitions need the samecfgas the export, because dead code fails the deny-warnings gate, so it is more than a trim.runvil-types, which has other work in flight.🤖 Generated with Claude Code