From 253b948c359e1a4779a4a8c1de7d20ec62610474 Mon Sep 17 00:00:00 2001 From: schickling-assistant <261620128+schickling-assistant@users.noreply.github.com> Date: Sun, 1 Nov 2026 22:50:15 -0800 Subject: [PATCH] Publish fractal-chatgpt Nix package with st-chatgpt bridge --- docs/st3/client-v0/README.md | 2 +- flake.nix | 16 +++++++++++----- release-notes/fractal-chatgpt-nix-package.json | 11 +++++++++++ scripts/chatgpt-prototype-e2e.py | 2 +- 4 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 release-notes/fractal-chatgpt-nix-package.json diff --git a/docs/st3/client-v0/README.md b/docs/st3/client-v0/README.md index f9c49f0695a..25496f4a0f5 100644 --- a/docs/st3/client-v0/README.md +++ b/docs/st3/client-v0/README.md @@ -1779,7 +1779,7 @@ The shared `checks.st3` suite includes the adapter's Rust tests. Rerun the scratch exercise (no live daemon or ChatGPT application is touched): ```sh -nix develop -c bash -c 'export CARGO_TARGET_DIR=tmp/target; cargo run -p fractal-client-codegen && cargo build -j 2 -p fractal-chatgpt -p fractal -p fractal-cli --features fractal/test-support --bin st-chatgpt --bin fractal --example chatgpt_fixture && cargo test -j 2 -p fractal-chatgpt && cargo test -j 2 -p fractal --test assistant_native && python3 scripts/chatgpt-prototype-e2e.py' +nix develop -c bash -c 'export CARGO_TARGET_DIR=tmp/target; cargo run -p fractal-client-codegen && cargo build -j 2 -p fractal-chatgpt -p fractal -p fractal-cli --features fractal/test-support --bin fractal-chatgpt --bin fractal --example chatgpt_fixture && cargo test -j 2 -p fractal-chatgpt && cargo test -j 2 -p fractal --test assistant_native && python3 scripts/chatgpt-prototype-e2e.py' ``` The script starts the repository API harness with its own persistent store, paired gateway, diff --git a/flake.nix b/flake.nix index 493331b74a1..a2fa551eeeb 100644 --- a/flake.nix +++ b/flake.nix @@ -722,20 +722,23 @@ st3 = fractal; # LIVE-MIGRATION END arn:lmig:smalltalk:2026-10-16-fractal-binary-aliases - stChatgpt = pkgs.rustPlatform.buildRustPackage { - pname = "st-chatgpt"; + fractalChatgpt = pkgs.rustPlatform.buildRustPackage { + pname = "fractal-chatgpt"; inherit version cargoDeps; src = self; - cargoBuildFlags = [ "-p" "fractal-chatgpt" "--bin" "st-chatgpt" ]; + cargoBuildFlags = [ "-p" "fractal-chatgpt" "--bin" "fractal-chatgpt" ]; # .cargo/config.toml links Linux targets with mold. nativeBuildInputs = pkgs.lib.optionals pkgs.stdenv.hostPlatform.isLinux [ pkgs.mold ]; # The shared daemon check runs the adapter's Rust tests. doCheck = false; + # LIVE-MIGRATION BRIDGE arn:lmig:smalltalk:2026-11-01-fractal-chatgpt-alias — DELETE at contraction — https://github.com/compoundingtech/fractal/issues/3032 + postInstall = ''ln -s fractal-chatgpt "$out/bin/st-chatgpt"''; + # LIVE-MIGRATION END arn:lmig:smalltalk:2026-11-01-fractal-chatgpt-alias meta = { description = "Standalone Fractal ChatGPT MCP adapter"; homepage = "https://github.com/compoundingtech/fractal"; license = pkgs.lib.licenses.mit; - mainProgram = "st-chatgpt"; + mainProgram = "fractal-chatgpt"; }; }; @@ -1103,7 +1106,10 @@ packages.st3 = st3; packages.fractal-web = fractalWeb; packages.fractal = fractal; - packages.st-chatgpt = stChatgpt; + packages.fractal-chatgpt = fractalChatgpt; + # LIVE-MIGRATION BRIDGE arn:lmig:smalltalk:2026-11-01-fractal-chatgpt-alias — DELETE at contraction — https://github.com/compoundingtech/fractal/issues/3032 + packages.st-chatgpt = fractalChatgpt; + # LIVE-MIGRATION END arn:lmig:smalltalk:2026-11-01-fractal-chatgpt-alias packages.st-fabric-adapter = stFabricAdapter; # Isolated bootstrap/live proofs use the exact pairing API revision. packages.fabric-pairing = fabric.packages.${system}.default; diff --git a/release-notes/fractal-chatgpt-nix-package.json b/release-notes/fractal-chatgpt-nix-package.json new file mode 100644 index 00000000000..cabc8cd7753 --- /dev/null +++ b/release-notes/fractal-chatgpt-nix-package.json @@ -0,0 +1,11 @@ +{ + "version": 1, + "summary": "Publish the ChatGPT adapter Nix package as fractal-chatgpt with the st-chatgpt bridge", + "replay": {"status": "none", "detail": "No graph replay or data changes."}, + "schema": {"status": "none", "detail": "No storage schema changes."}, + "rules": {"status": "none", "detail": "No checkpoint or coordination rule changes."}, + "compatibility": {"status": "changed", "detail": "packages.fractal-chatgpt is canonical. packages.st-chatgpt selects the same derivation, and bin/st-chatgpt is a symlink to fractal-chatgpt. The Cargo st-chatgpt target remains. Source exercises that launch the adapter select fractal-chatgpt."}, + "downtime": {"status": "none", "detail": "No daemon restart or service interruption is required."}, + "manual": {"status": "changed", "detail": "New Nix consumers can select fractal-chatgpt. Existing st-chatgpt package and executable consumers continue to work. The prototype exercise builds and launches fractal-chatgpt."}, + "recovery": {"status": "none", "detail": "No persistent data is changed. The retained package attribute and executable symlink continue to invoke the same adapter."} +} diff --git a/scripts/chatgpt-prototype-e2e.py b/scripts/chatgpt-prototype-e2e.py index 8e4386c7abd..9565fbafcdf 100755 --- a/scripts/chatgpt-prototype-e2e.py +++ b/scripts/chatgpt-prototype-e2e.py @@ -120,7 +120,7 @@ def replace_expired_grant(): with socket.socket() as listener: listener.bind(('127.0.0.1',0)); port=listener.getsockname()[1] endpoint='http://127.0.0.1:'+str(port)+'/mcp' - adapter_args=[str(BIN/'st-chatgpt'),'--socket',str(STATE/'st3-client.sock'),'--credential-file',str(credential)] + adapter_args=[str(BIN/'fractal-chatgpt'),'--socket',str(STATE/'st3-client.sock'),'--credential-file',str(credential)] adapter=start(adapter_args+['--listen','127.0.0.1:'+str(port)],'adapter.log') def listening(): try: