feat: Cargo workspace with gateway placeholder (#82) - #99
Merged
Merged
Conversation
This was referenced Aug 19, 2026
Contributor
Author
|
Closing as premature. The workspace split exists only to host the gateway crate (#83/#84, the OpenAI-compatible verify endpoint from the RFC), and that work is not scheduled yet. The split is mechanical and takes minutes, so it should land as the first commit of the actual gateway work instead of reserving an empty crate now. Issue #82 stays open, tied to the gateway milestone. |
Contributor
Author
|
Reopened: closing this was premature while the gateway's value is still under discussion. See the PR conversation for the tradeoff summary. |
The engine stays the root package - crate name, src/ path, binaries, CI, and Docker all unchanged. gateway/ is an empty workspace member reserved for the Verified Completions gateway (#83/#84), so its future HTTP and LLM dependencies never enter the engine crate and it is forced onto the public WebSocket API like any other client. Mechanical only; no engine code changes.
…yable story Naming decided: the crate stays inputlayer-gateway; conceptually it is the stack's model gateway (OpenAI-compatible endpoint that proxies completions and verifies conversations). Production deployments run two components: the IL engine and the IL gateway.
jsam
force-pushed
the
feat/workspace-split
branch
from
August 20, 2026 09:39
0d856ec to
992f901
Compare
The workspace conversion broke the image build: cargo cannot load the workspace without gateway/Cargo.toml and a stub source present in the build context. The dep-cache stage now copies the gateway manifest with a stub lib, and the real build copies gateway/ sources. Makes this PR self-contained instead of depending on the stacked gateway PR's Dockerfile.
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.
What
Implements #82 in its minimal mechanical form: the repo becomes a Cargo workspace while the engine stays the root package - crate name, src/ layout, all three binaries plus il, CI, and the Docker build are untouched. gateway/ is an empty member crate reserved for the gateway (#83/#84).
Why a gateway crate at all (discussed 2026-08-19)
The gateway is the stack's model gateway: an OpenAI-compatible endpoint that forwards completions to the model provider and verifies every conversation against the loaded ontology (findings with quoted spans and proof trees). It is the base_url-swap product from the RFC and the deck, and it is what makes verification language-agnostic. From the infra side, production deployments run two required components: the IL engine and the IL gateway. A separate crate keeps HTTP/LLM dependencies out of the engine and forces the gateway onto the public WebSocket API like any other client.
Naming decided: crate stays inputlayer-gateway ('model gateway' is the role, not the name).
Merge order
Stacked on #98 (base branch feat/il-registry-cli) to avoid a Cargo.toml conflict - merge #98 first; this PR then retargets to main automatically when the base branch is deleted.
Verified
cargo build (both members), cargo fmt --check, make doc-check clean; cargo metadata lists inputlayer + inputlayer-gateway.
Closes #82