498582deb1
The right-hand side of the LayoutGeometry completeness diff was a second hand-written list. Both this branch's own review and ChatGPT Codex found it, and the previous commit corrected the PROSE; Codex asked for the FIX. This is it. the_enumeration_names_every_variant_the_derive_declares diffs every_model_command() against variants::declared::<ModelCommand>() -- serde's derive-generated variant list, improvise-5ubs's mechanism. The chain is now derive -> every_model_command() -> model_effects -> case list, every link checked, which is what the ticket asked for. Injection is Codex's own, run end to end: a ModelCommand::ProbeGeometry whose effect declares LayoutGeometry, with the model_effects and variant_name arms the compiler forces, omitted from BOTH lists. Before: the whole workspace green. After: staged, each stage naming the probe -- every_model_command() never constructs ["ProbeGeometry"] then, with the enumeration repaired and only the case list short, the_layout_geometry_cases_are_every_wire_effect_of_that_kind right: [... "ProbeGeometry" ...] The staging is the point: the two tests answer different questions. SCOPE OVERRUN, declared. `variants` was `#[cfg(test)] pub(crate)`, not merely `pub(crate)`, and `declared()` needs serde_json, which improvise-protocol carries only as a dev-dependency -- so the authorised one-token change could not work. What it took instead, all plumbing, no behaviour change: improvise-protocol/Cargo.toml serde_json optional + a `test-support` feature improvise-protocol/src/lib.rs #[cfg(any(test, feature = "test-support"))] pub improvise-command/Cargo.toml dev-dep enables that feature The feature is OFF in every shipped build: `cargo tree --edges normal --target wasm32-unknown-unknown` shows no serde_json, and all eight wasm-gated crates still check clean. Drop this commit if the crossing is unwanted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
26 lines
950 B
TOML
26 lines
950 B
TOML
[package]
|
|
name = "improvise-protocol"
|
|
version = "0.1.0-rc2"
|
|
edition = "2024"
|
|
description = "Wire vocabulary and portable session state shared by the improvise server and clients"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/fiddlerwoaroof/improvise"
|
|
|
|
[dependencies]
|
|
improvise-core = { path = "../improvise-core" }
|
|
serde = { version = "1", features = ["derive"] }
|
|
# For the one width rule both front ends measure a header label with
|
|
# (`AxisFrame::header_widths`). A terminal column is a display cell, not a
|
|
# `char`, and the TUI has always measured it this way.
|
|
unicode-width = "^0.2"
|
|
# Only for `variants`, which is off unless a test build asks for it.
|
|
serde_json = { version = "1", optional = true }
|
|
|
|
[features]
|
|
# `variants` reaches OUT of this crate: improvise-command bounds its own
|
|
# ModelCommand enumeration with it. Off in every shipped build (improvise-26dm).
|
|
test-support = ["dep:serde_json"]
|
|
|
|
[dev-dependencies]
|
|
serde_json = "1"
|