Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 1 addition & 40 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ concurrency:
# to anonymous, which is what the cache is there to make rare.
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
RUSTUP_TOOLCHAIN: stable

jobs:
fmt:
Expand All @@ -33,8 +32,6 @@ jobs:

clippy:
runs-on: ubuntu-latest
env:
RUSTUP_TOOLCHAIN: stable
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -83,8 +80,6 @@ jobs:

test:
runs-on: ubuntu-latest
env:
RUSTUP_TOOLCHAIN: stable
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -133,7 +128,6 @@ jobs:
docs:
runs-on: ubuntu-latest
env:
RUSTUP_TOOLCHAIN: stable
RUSTDOCFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -162,8 +156,6 @@ jobs:

check-workshop:
runs-on: windows-latest
env:
RUSTUP_TOOLCHAIN: stable
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -234,8 +226,6 @@ jobs:
# missing-system-package class of failure the Windows-only job cannot see.
check-workshop-linux:
runs-on: ubuntu-22.04
env:
RUSTUP_TOOLCHAIN: stable
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -341,35 +331,6 @@ jobs:
working-directory: crates/gateway-config-ui/ui
run: npm test

msrv:
runs-on: ubuntu-latest
env:
RUSTUP_TOOLCHAIN: 1.89.0
steps:
- uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@1.89.0

- name: Cache cargo
uses: Swatinem/rust-cache@v2

- name: Cache the embedding model
uses: ./.github/actions/hf-model-cache

- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: crates/*/ui/package-lock.json

- name: Install UI dependencies
run: |
npm ci --prefix crates/workshop-server/ui
npm ci --prefix crates/gateway-config-ui/ui

- name: Check on MSRV
run: cargo check --locked --workspace --exclude workshop --exclude workshop-server --all-targets --all-features

supply-chain:
runs-on: ubuntu-latest
steps:
Expand All @@ -391,7 +352,7 @@ jobs:
# or that job bypasses this gate.
ci-green:
runs-on: ubuntu-latest
needs: [fmt, clippy, test, docs, check-workshop, check-workshop-linux, ui, msrv, supply-chain]
needs: [fmt, clippy, test, docs, check-workshop, check-workshop-linux, ui, supply-chain]
if: always()
steps:
- name: Verify every job succeeded
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/release-workshop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ concurrency:
group: release-workshop-${{ github.ref_name }}
cancel-in-progress: false

env:
# The repo's rust-toolchain.toml pins the MSRV for local builds; CI tests
# the current stable.
RUSTUP_TOOLCHAIN: stable

jobs:
prepare:
runs-on: ubuntu-latest
Expand Down
7 changes: 0 additions & 7 deletions .github/workflows/stt-miri.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,9 @@ jobs:
native-whisper:
runs-on: [self-hosted, windows, cuda]
timeout-minutes: 90
env:
RUSTUP_TOOLCHAIN: 1.89
RUSTUP_AUTO_INSTALL: "0"
steps:
- uses: actions/checkout@v4

- name: Verify preinstalled MSRV Rust
shell: powershell
run: tools/validate-rust-1.89.0.ps1

- name: Cache Cargo
uses: Swatinem/rust-cache@v2

Expand Down
1 change: 0 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ Multi-crate Rust workspace for the PromptForge pipeline runtime, inference gatew
- Long-running work reports through `shared-progress`. Producers report operation state, hosts forward it, and renderers format it.
- Unsafe code stays in its explicitly owned boundary. Every unsafe block documents its safety invariants immediately before the block.
- Comments explain a non-obvious constraint, ordering requirement, or workaround. Every platform or external-bug workaround cites its upstream issue URL in the explanatory comment.
- CI lints with a newer stable toolchain than the pinned local MSRV (`rust-toolchain.toml`). Lints introduced or strengthened after the pin, such as unused glob imports, may fail only on CI. Check with the newer toolchain before pushing when a change touches imports or doc comments; `cargo doc` runs with warnings denied on CI.
1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ default-members = ["crates/gateway"]
[workspace.package]
version = "0.3.0"
edition = "2024"
rust-version = "1.89"
license = "BSL-1.0"
repository = "https://github.com/cppalliance/promptforge"

Expand Down
7 changes: 1 addition & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[![CI](https://github.com/cppalliance/promptforge/actions/workflows/ci.yml/badge.svg)](https://github.com/cppalliance/promptforge/actions/workflows/ci.yml)
[![License](https://img.shields.io/badge/license-BSL--1.0-blue.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/rust-1.89%2B-orange.svg)](https://www.rust-lang.org/)

# PromptForge

Expand Down Expand Up @@ -65,7 +64,7 @@ Lua sets up the turn. The prose before a Lua block is that block's lazy `prose`

## Build from source

Every build needs Rust 1.89 or later and Node.js 22. The two web UIs are bundled with esbuild during the Cargo build, so run `npm ci` once in each `ui/` folder after cloning:
Every build needs Rust and Node.js 22. The two web UIs are bundled with esbuild during the Cargo build, so run `npm ci` once in each `ui/` folder after cloning:

```bash
git clone git@github.com:cppalliance/promptforge.git
Expand Down Expand Up @@ -109,10 +108,6 @@ Build the guide locally with `mdbook build guide`.

![Filing cabinets](images/banner-06.png)

## Minimum Rust Version

Rust 1.89 or later.

## Contributing

Build, format, and test before you open a PR. CI runs `cargo fmt --check`, `clippy -D warnings`, and `cargo test --workspace`.
Expand Down
1 change: 0 additions & 1 deletion crates/build-llama-cuda/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "build-llama-cuda"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/build-ui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "build-ui"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/build-workshop/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "build-workshop"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-config-ui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-config-ui"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-config/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-config"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-local/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-local"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
2 changes: 1 addition & 1 deletion crates/gateway-local/src/artifacts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const DOWNLOAD_CONNECT_TIMEOUT: std::time::Duration = std::time::Duration::from_
/// accepts the connection and then sends nothing can never pin the
/// provisioning thread forever - and a reader thread parked past the idle
/// bound reaps when the ceiling drops its body.
const DOWNLOAD_REQUEST_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(2 * 60 * 60);
const DOWNLOAD_REQUEST_TIMEOUT: std::time::Duration = std::time::Duration::from_hours(2);

type Result<T> = std::result::Result<T, LocalError>;

Expand Down
2 changes: 1 addition & 1 deletion crates/gateway-local/src/chat_templates/live.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const LIVE_ENV: &str = "PROMPTFORGE_LIVE_CHAT_TEMPLATES";
const SERVER_ENV: &str = "PROMPTFORGE_LLAMA_SERVER";
const MODELS_ENV: &str = "PROMPTFORGE_CHAT_TEMPLATE_MODELS";
const API_KEY: &str = "promptforge-chat-template-live";
const START_TIMEOUT: Duration = Duration::from_secs(20 * 60);
const START_TIMEOUT: Duration = Duration::from_mins(20);
static LIVE_SERIAL: Mutex<()> = Mutex::new(());

#[derive(Debug, Deserialize)]
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-logging/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-logging"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-routing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-routing"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-stt-backend-whisper/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-stt-backend-whisper"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-stt-engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-stt-engine"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ async fn canceled_decode_scenario_releases_and_permits_a_follow_up() {
engine.shutdown().expect("worker joins");
}

#[tokio::test(start_paused = true)]
#[tokio::test]
async fn decode_rendezvous_timeout_releases_a_late_arrival_and_permits_a_follow_up() {
let decoder = ScriptedDecoder::new();
decoder.push_text("late arrival");
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-stt/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-stt"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
2 changes: 1 addition & 1 deletion crates/gateway-stt/src/audio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ mod tests {
assert!(
error
.source()
.is_some_and(<(dyn std::error::Error + 'static)>::is::<base64::DecodeError>),
.is_some_and(<dyn std::error::Error + 'static>::is::<base64::DecodeError>),
"the error chain carries the decoder failure"
);
}
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-web-search/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-web-search"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway-whisper-ffi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway-whisper-ffi"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/gateway/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "gateway"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
6 changes: 3 additions & 3 deletions crates/gateway/tests/it/cuda.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ const PROJECTOR_URL: &str =
const PROJECTOR_SHA256: &str = "140be8d7849741f88c50757d529b84373ee8e27052cc2236855b537f4a8215fa";

/// First provisioning downloads the three pinned artifacts.
const PROVISION_TIMEOUT: Duration = Duration::from_secs(45 * 60);
const PROVISION_TIMEOUT: Duration = Duration::from_mins(45);
/// A marker-hit relaunch skips downloads and re-hashing; only spawn and
/// weight load remain.
const RELAUNCH_TIMEOUT: Duration = Duration::from_secs(15 * 60);
const RELAUNCH_TIMEOUT: Duration = Duration::from_mins(15);
/// One completion against a warm server.
const COMPLETION_TIMEOUT: Duration = Duration::from_secs(5 * 60);
const COMPLETION_TIMEOUT: Duration = Duration::from_mins(5);
/// Bound on waiting for the capture readers to drain the child's startup
/// log: readiness is an HTTP probe, so it can beat the final piped bytes.
const DIAGNOSTICS_TIMEOUT: Duration = Duration::from_secs(30);
Expand Down
1 change: 0 additions & 1 deletion crates/product-integration-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "product-integration-tests"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-agent"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-core-support/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-core-support"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-core"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-lua/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-lua"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-model-client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-model-client"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-parser/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-parser"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
1 change: 0 additions & 1 deletion crates/promptforge-store/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
name = "promptforge-store"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = false
Expand Down
Loading
Loading