From 10149f50dd6adfbef7d2d5e6105d42ea397b9dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Wed, 22 Jul 2026 21:22:16 -0400 Subject: [PATCH] =?UTF-8?q?install:=20stop=20persisting=20KIGI=5FGRAPH=20?= =?UTF-8?q?=E2=80=94=20the=20binary=20default=20is=20the=20product=20defau?= =?UTF-8?q?lt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README always shipped graph engineering enabled; the enablement was delegated to installer env plumbing that diverged per platform: install.sh exported KIGI_GRAPH=1 into shell rc (worked), install.ps1 wrote the User registry variable — which running Windows terminals (and new tabs of an open Windows Terminal) never pick up, so /graph was 'missing on Windows' despite a successful install. With resolve_graph() defaulting true in the binary (e53a66d), the env writes are redundant complexity: drop them from both installers, keep KIGI_GRAPH=0 as the documented opt-out (env still beats the default), and correct the flag comment to tell this story instead of a 'gray release' one. Both scripts syntax-checked (sh -n / pwsh parser). Installers are served from main (raw.githubusercontent), so this takes effect for all new installs immediately — no retag needed; the running v0.1.5 build already carries the binary-default fix. --- crates/codegen/kigi-shell/src/agent/config.rs | 15 +++++++++------ install.ps1 | 16 +++++++--------- install.sh | 12 ++++-------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/crates/codegen/kigi-shell/src/agent/config.rs b/crates/codegen/kigi-shell/src/agent/config.rs index bfa860b..5d6a499 100644 --- a/crates/codegen/kigi-shell/src/agent/config.rs +++ b/crates/codegen/kigi-shell/src/agent/config.rs @@ -1881,12 +1881,15 @@ impl Config { .default(true) .resolve() } - /// Graph mode (`/graph`) master switch. Default ON — the gray release - /// (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 - /// availability time, not here. + /// Graph mode (`/graph`) master switch. Default ON in the binary: the + /// README ships graph engineering enabled for every install, but the + /// old `default(false)` delegated enablement to installer env plumbing + /// (`install.sh` shell-rc export vs `install.ps1` registry write) — and + /// Windows terminals don't pick up freshly-written registry env, so + /// `/graph` went "missing on Windows". The product default lives HERE, + /// not in installers. `KIGI_GRAPH=0` is the off-switch. Graph mode + /// additionally requires the goal harness (nodes execute as goals), + /// enforced at availability time, not here. pub(crate) fn resolve_graph(&self) -> Resolved { BoolFlag::env("KIGI_GRAPH").default(true).resolve() } diff --git a/install.ps1 b/install.ps1 index 3964fc6..b9227b4 100644 --- a/install.ps1 +++ b/install.ps1 @@ -149,15 +149,13 @@ try { Write-Host "Run 'kigi' to get started." } - # Graph engineering ships enabled by default. Respect an explicit - # user choice: only set the variable when it is not already defined - # (so a persisted opt-out of "0" survives reinstalls). - $Graph = [Environment]::GetEnvironmentVariable("KIGI_GRAPH", "User") - if ($null -eq $Graph -or $Graph -eq "") { - [Environment]::SetEnvironmentVariable("KIGI_GRAPH", "1", "User") - Write-Host "Enabled graph engineering (KIGI_GRAPH=1)." - Write-Host "Disable: [Environment]::SetEnvironmentVariable('KIGI_GRAPH','0','User')" - } + # Graph engineering is enabled by default IN THE BINARY (resolve_graph + # defaults true) — no environment plumbing needed. The installer used + # to persist KIGI_GRAPH=1 into the User registry env, but running + # terminals (and new tabs of an open Windows Terminal) never pick up + # freshly-written registry variables, which made /graph "missing on + # Windows" while the shell-rc path worked on macOS/Linux. Opt out any + # time with: [Environment]::SetEnvironmentVariable('KIGI_GRAPH','0','User') } finally { Remove-Item -Path $TmpDir -Recurse -Force -ErrorAction SilentlyContinue } diff --git a/install.sh b/install.sh index 8800436..3b80a90 100644 --- a/install.sh +++ b/install.sh @@ -209,7 +209,6 @@ case "${SHELL:-}" in */zsh) RC_FILE="${ZDOTDIR:-$HOME}/.zshrc" PATH_LINE="export PATH=\"$BIN_DIR:\$PATH\"" - GRAPH_LINE="export KIGI_GRAPH=1" ;; */bash) # macOS login shells read ~/.bash_profile; Linux reads ~/.bashrc. @@ -219,7 +218,6 @@ case "${SHELL:-}" in RC_FILE="$HOME/.bashrc" fi PATH_LINE="export PATH=\"$BIN_DIR:\$PATH\"" - GRAPH_LINE="export KIGI_GRAPH=1" ;; */fish) # fish_add_path in config.fish is fish's own idempotent way @@ -228,12 +226,10 @@ case "${SHELL:-}" in mkdir -p "$FISH_CONF_DIR" RC_FILE="$FISH_CONF_DIR/config.fish" PATH_LINE="fish_add_path $BIN_DIR" - GRAPH_LINE="set -gx KIGI_GRAPH 1" ;; *) RC_FILE="$HOME/.profile" PATH_LINE="export PATH=\"$BIN_DIR:\$PATH\"" - GRAPH_LINE="export KIGI_GRAPH=1" ;; esac @@ -247,8 +243,8 @@ case ":$PATH:" in ;; esac -# Graph engineering ships enabled by default. The KIGI_GRAPH guard makes -# this idempotent AND respects an explicit user opt-out (an existing -# `export KIGI_GRAPH=0` line is left untouched). Disable any time with: +# Graph engineering is enabled by default IN THE BINARY (resolve_graph +# defaults true) — the installer no longer writes KIGI_GRAPH=1 into shell +# rc files (per-shell env plumbing was fragile and diverged per platform). +# Disable any time with: # echo 'export KIGI_GRAPH=0' >> -persist_line "$RC_FILE" "$GRAPH_LINE" "KIGI_GRAPH" "graph engineering (KIGI_GRAPH=1)"