feat(graph): /graph ships on by default — end the KIGI_GRAPH gray release
Release / build (aarch64-apple-darwin) (push) Waiting to run
Release / build (x86_64-apple-darwin) (push) Waiting to run
Release / build (aarch64-unknown-linux-gnu) (push) Waiting to run
Release / build (x86_64-pc-windows-msvc) (push) Waiting to run
Release / publish GitHub Release (push) Blocked by required conditions
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 7s
Release / build (aarch64-apple-darwin) (push) Waiting to run
Release / build (x86_64-apple-darwin) (push) Waiting to run
Release / build (aarch64-unknown-linux-gnu) (push) Waiting to run
Release / build (x86_64-pc-windows-msvc) (push) Waiting to run
Release / publish GitHub Release (push) Blocked by required conditions
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 7s
resolve_graph() read only the KIGI_GRAPH env var with default(false) (plan.md G0 gate), so /graph existed solely on machines whose environment exported the dev flag — which presented as '/graph is missing on Windows'. There was never any platform-conditional code: the Mac worked because the dev env var was set there. Default is now true (matching /goal's shipped state); KIGI_GRAPH=0 remains the off-switch, and availability still requires the goal harness (BuiltinGate::Graph). AGENTS.md updated; new test pins fresh-install-on plus env-zero-off. Verified: kigi-shell 5262 + kigi-tui 6874 tests green, clippy clean.
This commit is contained in:
@@ -89,8 +89,9 @@ node as one ordinary goal — the agentic loop lives INSIDE the node; the
|
|||||||
edges stay deterministic Rust. The harness appends a terminal
|
edges stay deterministic Rust. The harness appends a terminal
|
||||||
`gn-final` verification node depending on every planner node.
|
`gn-final` verification node depending on every planner node.
|
||||||
|
|
||||||
- Feature flag `KIGI_GRAPH=1` (default off); availability additionally
|
- Enabled by default (`KIGI_GRAPH=0` is the off-switch; the G0 gray
|
||||||
requires the goal harness (`BuiltinGate::Graph`).
|
release is over); availability additionally requires the goal harness
|
||||||
|
(`BuiltinGate::Graph`).
|
||||||
- Key modules (kigi-shell): `session/graph_tracker.rs` (pure state
|
- Key modules (kigi-shell): `session/graph_tracker.rs` (pure state
|
||||||
machine; reuses `GoalStatus`/`GoalPhase`/`GoalPauseReason`),
|
machine; reuses `GoalStatus`/`GoalPhase`/`GoalPauseReason`),
|
||||||
`session/graph_plan.rs` (planner-JSON contract + validation + fnv id
|
`session/graph_plan.rs` (planner-JSON contract + validation + fnv id
|
||||||
|
|||||||
@@ -1881,12 +1881,14 @@ impl Config {
|
|||||||
.default(true)
|
.default(true)
|
||||||
.resolve()
|
.resolve()
|
||||||
}
|
}
|
||||||
/// Graph mode (`/graph`) master switch. Default OFF — gray-released via
|
/// Graph mode (`/graph`) master switch. Default ON — the gray release
|
||||||
/// `KIGI_GRAPH=1` only (plan.md G0 gate). Graph mode additionally
|
/// (plan.md G0, `KIGI_GRAPH=1` only) is over; every install gets the
|
||||||
|
/// same commands (its absence on non-dev machines read as a platform
|
||||||
|
/// bug). `KIGI_GRAPH=0` remains the off-switch. Graph mode additionally
|
||||||
/// requires the goal harness (nodes execute as goals), enforced at
|
/// requires the goal harness (nodes execute as goals), enforced at
|
||||||
/// availability time, not here.
|
/// availability time, not here.
|
||||||
pub(crate) fn resolve_graph(&self) -> Resolved<bool> {
|
pub(crate) fn resolve_graph(&self) -> Resolved<bool> {
|
||||||
BoolFlag::env("KIGI_GRAPH").default(false).resolve()
|
BoolFlag::env("KIGI_GRAPH").default(true).resolve()
|
||||||
}
|
}
|
||||||
/// Max graph nodes running concurrently (`KIGI_GRAPH_CONCURRENCY`).
|
/// Max graph nodes running concurrently (`KIGI_GRAPH_CONCURRENCY`).
|
||||||
/// 1 = serial (G0-identical); clamped to [1, 8] — the coordinator has
|
/// 1 = serial (G0-identical); clamped to [1, 8] — the coordinator has
|
||||||
@@ -4337,6 +4339,24 @@ mod tests {
|
|||||||
/// Catalog key of the bundled fallback default (`default_models.json`):
|
/// Catalog key of the bundled fallback default (`default_models.json`):
|
||||||
/// `{platform_id}/{model_id}` for `crate::models::default_model()`.
|
/// `{platform_id}/{model_id}` for `crate::models::default_model()`.
|
||||||
const BUNDLED_DEFAULT_KEY: &str = "kimi-code/kimi-for-coding";
|
const BUNDLED_DEFAULT_KEY: &str = "kimi-code/kimi-for-coding";
|
||||||
|
|
||||||
|
/// `/graph` ships ON by default: the G0 gray release (`KIGI_GRAPH=1`
|
||||||
|
/// only) made the command exist solely on machines with the dev env
|
||||||
|
/// var — which read as "missing on Windows". A fresh install with no
|
||||||
|
/// env must resolve `true`; `KIGI_GRAPH=0` stays the off-switch.
|
||||||
|
#[test]
|
||||||
|
#[serial]
|
||||||
|
fn graph_defaults_on_and_env_zero_disables() {
|
||||||
|
let cfg = Config::default();
|
||||||
|
{
|
||||||
|
let _unset = EnvGuard::unset("KIGI_GRAPH");
|
||||||
|
assert!(cfg.resolve_graph().value, "fresh install must offer /graph");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
let _off = EnvGuard::set("KIGI_GRAPH", "0");
|
||||||
|
assert!(!cfg.resolve_graph().value, "KIGI_GRAPH=0 must disable");
|
||||||
|
}
|
||||||
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn main_cli_tools_override_preserves_profile_injection_policy() {
|
fn main_cli_tools_override_preserves_profile_injection_policy() {
|
||||||
let overrides = CliAgentOverrides {
|
let overrides = CliAgentOverrides {
|
||||||
|
|||||||
Reference in New Issue
Block a user