Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
03b078d
Split Workshop route tests from handlers
vinniefalco Sep 5, 2026
97856d0
Replace the `serve` verb with root serving and `--config`
vinniefalco Sep 5, 2026
f303718
Extract gateway-logging crate with bounded priority queue
vinniefalco Sep 6, 2026
1009b3f
Add diagnostics report, five-run retention, and redaction
vinniefalco Sep 6, 2026
4a1136a
Fix rustdoc private links in gateway runner docs
vinniefalco Sep 6, 2026
ccb77bf
Pin gateway-logging dependency boundary, document logging
vinniefalco Sep 6, 2026
bde3846
Close plan: gateway-logging-cli
vinniefalco Sep 6, 2026
6e5f0ac
Pin batch and realtime speech behavior
vinniefalco Sep 6, 2026
bcc6582
Pin native Whisper runtime behavior
vinniefalco Sep 6, 2026
655dc16
Freeze the realtime transcription wire contract
vinniefalco Sep 6, 2026
6b7ec5f
Rename the transcription crate as the STT engine
vinniefalco Sep 6, 2026
672befe
Move take ownership into gateway STT
vinniefalco Sep 6, 2026
c7c1c1f
Separate Whisper from the STT engine
vinniefalco Sep 6, 2026
b8caab4
Enforce exact STT architecture ratchets
vinniefalco Sep 6, 2026
75f4cb3
Bound transcription workers and expose test fixtures
vinniefalco Sep 6, 2026
12a233f
Harden STT workers and extend release gates
vinniefalco Sep 6, 2026
3642d6d
Migrate STT tuning to canonical configuration
vinniefalco Sep 6, 2026
4b49007
Add bounded realtime audio ingestion
vinniefalco Sep 6, 2026
101deda
Define the private Realtime wire
vinniefalco Sep 6, 2026
04e887d
Pin STT architecture tools to Rust 1.89
vinniefalco Sep 6, 2026
f10f7c9
Remove unused STT test imports
vinniefalco Sep 6, 2026
32717a1
Stage Gateway sidecars for Workshop CI
vinniefalco Sep 6, 2026
c65961a
Bound Realtime session input ownership
vinniefalco Sep 6, 2026
1fc3c20
Finalize realtime items independently
vinniefalco Sep 6, 2026
b6021e4
Use preinstalled Rust on native runners
vinniefalco Sep 6, 2026
2550188
Replace the STT runtime with a speech facade
vinniefalco Sep 6, 2026
c9cbe63
Resolve Windows cache ownership by SID
vinniefalco Sep 6, 2026
15c210d
Quiesce speech generations before replacement
vinniefalco Sep 6, 2026
467a262
Make profile replacement transactional
vinniefalco Sep 6, 2026
909ffea
Separate Gateway and Workshop origin policies
vinniefalco Sep 6, 2026
6016500
Publish generic speech discovery facts
vinniefalco Sep 6, 2026
781172f
Streamline contributor and CI maintenance
seanpar203 Sep 6, 2026
1b50919
Mount Gateway Realtime transcription
vinniefalco Sep 6, 2026
dee47d7
Make session retirement cleanup event-driven
vinniefalco Sep 6, 2026
16c1b29
Gate Gateway Windows-only declarations
vinniefalco Sep 7, 2026
06cba48
Add the Workshop Realtime relay
vinniefalco Sep 7, 2026
d17d168
Implement recoverable browser speech capture
vinniefalco Sep 7, 2026
7452751
Migrate Workshop dictation to Realtime
vinniefalco Sep 7, 2026
6ce3872
Prove Realtime flows with canonical fixtures
vinniefalco Sep 7, 2026
4944116
Require a model before built-in chat turns
vinniefalco Sep 7, 2026
94357c3
Converge Workshop startup state
vinniefalco Sep 7, 2026
aeec7b4
Bind live hypotheses before commit acknowledgment
vinniefalco Sep 7, 2026
fb4e0bf
Converge chat sessions with live catalogs
vinniefalco Sep 7, 2026
e7216d9
Partition live hypotheses into disjoint fields
vinniefalco Sep 7, 2026
006ba06
Schedule and rebase whole-window hypotheses
vinniefalco Sep 7, 2026
2d1ecca
Reconcile explicitly skipped final ranges
vinniefalco Sep 7, 2026
3766461
Record installed acceptance and repair UI fixture
vinniefalco Sep 7, 2026
2b7537e
Reduce input.rs test line count
vinniefalco Sep 7, 2026
49001c6
Retire legacy speech seams
vinniefalco Sep 7, 2026
faf122f
Finalize generic Realtime STT architecture
vinniefalco Sep 7, 2026
d79823e
Bookend Gateway serving file logs
vinniefalco Sep 7, 2026
13fb8ee
Recover Workshop after local Gateway exits
vinniefalco Sep 7, 2026
5c80bbd
Close plan: generic Realtime STT
vinniefalco Sep 7, 2026
f434c41
Split Gateway Realtime integration coverage
vinniefalco Sep 7, 2026
af5e64d
Split Workshop relay integration coverage
vinniefalco Sep 7, 2026
cbd20b6
Enforce integration test suite ceilings
vinniefalco Sep 7, 2026
3012863
Bound formatted logging records
vinniefalco Sep 7, 2026
8f81dea
Order and bound logging queue admission
vinniefalco Sep 7, 2026
e4370e8
Bound logging stalls and shutdown
vinniefalco Sep 7, 2026
fc2f929
Pin native CI to the exact Rust toolchain
vinniefalco Sep 7, 2026
b492a99
Pin STT API toolchain and package selection
vinniefalco Sep 7, 2026
f8e07fb
Rotate logs within fixed byte budgets
vinniefalco Sep 7, 2026
d9034d8
Redact logging fields before formatting
vinniefalco Sep 7, 2026
16dea69
Remove legacy STT configuration shims
vinniefalco Sep 7, 2026
c243a60
Centralize native STT fixture resolution
vinniefalco Sep 7, 2026
fdb6448
Ratchet feature-enabled STT fixture APIs
vinniefalco Sep 7, 2026
060626c
Narrow STT fixture controls to scenarios
vinniefalco Sep 7, 2026
8a56edd
Restore dead-code diagnostics for gateway STT
vinniefalco Sep 7, 2026
ad5a72c
Pin the native STT runner contract
vinniefalco Sep 7, 2026
7283026
Harden prepared persistence names
vinniefalco Sep 7, 2026
ca3138c
Extract profile switch preparation phases
vinniefalco Sep 7, 2026
16741b6
Complete the profile-switch transaction
vinniefalco Sep 7, 2026
9cf95e7
Decode Realtime events exhaustively
vinniefalco Sep 7, 2026
87775d6
Move insertion context into STT targets
vinniefalco Sep 7, 2026
9901b97
Add the pure TakeRegistry transition reducer
vinniefalco Sep 7, 2026
6ef4ee5
Route production STT through TakeRegistry
vinniefalco Sep 8, 2026
5b9d2a5
Discover Rust 1.89.0 for NetworkService runners
vinniefalco Sep 8, 2026
dff3f15
Define pure agent supervisor transitions
vinniefalco Sep 8, 2026
aadd957
Repair profile replacement architecture gate
vinniefalco Sep 8, 2026
bd1f5be
Classify every rotation crash checkpoint
vinniefalco Sep 8, 2026
0b8b3a5
Route agent supervision through transitions
vinniefalco Sep 8, 2026
8d7963b
Add validated sidecar connection capability
vinniefalco Sep 8, 2026
c335bd0
Require capability-based Gateway publication
vinniefalco Sep 8, 2026
d13f826
Route quit through the current Gateway snapshot
vinniefalco Sep 8, 2026
0c1e42c
Join cancellation-aware sidecar shutdown
vinniefalco Sep 8, 2026
178b78a
Split and ratchet sidecar lifecycle ownership
vinniefalco Sep 8, 2026
bf534f8
Preserve hypotheses across disjoint windows
vinniefalco Sep 8, 2026
c23b83a
Keep take audio bounded across compaction
vinniefalco Sep 8, 2026
64ebaf0
Bound and reconcile forced final windows
vinniefalco Sep 8, 2026
4815c50
Prove arbitrary-duration one-take dictation
vinniefalco Sep 8, 2026
0fdf542
Add interruptible one-command Workshop builds
vinniefalco Sep 8, 2026
23579f0
Restore dark installer checkbox text
vinniefalco Sep 8, 2026
6024d90
Repair rolling dictation reconciliation
vinniefalco Sep 8, 2026
7d690d0
Name installer components in product order
vinniefalco Sep 8, 2026
4fdb79f
Complete release verification
vinniefalco Sep 8, 2026
531187c
Close plan: promptforge debt [skip ci]
vinniefalco Sep 8, 2026
637438c
Establish repository policy and execution baseline
vinniefalco Sep 8, 2026
907d4bc
Correct Gateway resource embedding signatures
vinniefalco Sep 8, 2026
443ac6f
Replace Rust ratchets with behavioral evidence
vinniefalco Sep 8, 2026
61ef61a
Remove remaining structural ratchets
vinniefalco Sep 8, 2026
304663f
Consolidate logging test support
vinniefalco Sep 8, 2026
d3fbaab
Establish process-lifetime Gateway ownership
vinniefalco Sep 8, 2026
ea9fe75
Scope Workshop dictation by connection generation
vinniefalco Sep 8, 2026
c55b2a0
Close publication and bound Gateway shutdown
vinniefalco Sep 8, 2026
5263831
Require one explicit Rust toolchain directory
vinniefalco Sep 8, 2026
2998645
Validate 0.3.0 packages against exact processes
vinniefalco Sep 8, 2026
20402eb
Synthesize architecture guidance
vinniefalco Sep 9, 2026
a4456ee
Stabilize fixture shutdown reporting
vinniefalco Sep 9, 2026
5edcb3c
Close plan: remove unsupported ratchets
vinniefalco Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
# CRT. Runtime-loaded native libraries keep their own CRT boundary.
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

[alias]
workshop = "run -p build-workshop --"
6 changes: 6 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Pre-commit hook: Fast formatting check before creating commits.
set -e

echo "==> Running cargo fmt --all --check..."
cargo fmt --all --check
16 changes: 16 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
# Pre-push hook: Comprehensive validation before pushing to remote.
set -e

echo "==> Checking headless gateway (AGENTS.md rule)..."
cargo check -p gateway --no-default-features

echo "==> Running Clippy on workspace..."
cargo clippy --workspace --exclude workshop --exclude workshop-server --all-targets --all-features -- -D warnings

if command -v cargo-deny >/dev/null 2>&1; then
echo "==> Running cargo deny check..."
cargo deny check
fi

echo "==> Pre-push checks passed successfully."
1 change: 1 addition & 0 deletions .github/fixtures/workshop-package-smoke/gateway.state.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
active_profile = "main"
9 changes: 9 additions & 0 deletions .github/fixtures/workshop-package-smoke/gateway.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
config-version = 2

[server]
bind = "127.0.0.1:0"
api_key = "release-smoke"

[[profile]]
name = "main"
models = []
61 changes: 57 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
with:
components: rustfmt, clippy

- uses: dtolnay/rust-toolchain@1.89.0

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

Expand All @@ -41,14 +43,29 @@ jobs:
with:
node-version: 22

- name: Install UI dependencies
working-directory: crates/workshop-server/ui
run: npm ci

- name: Install config UI dependencies
working-directory: crates/gateway-config-ui/ui
run: npm ci

- name: Build Gateway without Workshop UI tooling
run: cargo build --locked -p gateway

- name: Check safe STT crates without unsafe code
env:
RUSTFLAGS: -D warnings
run: |
cargo rustc --locked -p gateway-stt-engine --lib -- -F unsafe-code
cargo rustc --locked -p gateway-stt-backend-whisper --lib -- -F unsafe-code
cargo rustc --locked -p gateway-stt --lib -- -F unsafe-code

- name: Check native STT FFI lint policy
env:
RUSTFLAGS: -D warnings
run: cargo check --locked -p gateway-whisper-ffi --lib

- name: Check product dependency boundaries
run: cargo test -p gateway-stt --test it architecture

- name: Format
run: cargo fmt --all --check

Expand Down Expand Up @@ -108,12 +125,30 @@ jobs:
working-directory: crates/workshop-server/ui
run: npm ci

- name: Build featureless Gateway
run: cargo build --locked -p gateway --no-default-features

- name: Stage Gateway sidecar
run: node tools/stage-gateway-sidecar.mjs stage --target x86_64-pc-windows-msvc --source target/debug/promptforge-gateway.exe

- name: Clippy (workshop)
run: cargo clippy -p workshop -p workshop-server --all-targets -- -D warnings

- name: Test (workshop)
run: cargo test --locked -p workshop -p workshop-server

- name: Test Gateway process ownership races
run: |
cargo test --locked -p shared-sidecar a_process_lifetime_lease_recovers_after_its_owner_is_terminated
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it simultaneous_direct_launches_leave_one_owner_and_one_clean_handoff
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it workshop_launch_lock_and_direct_launch_do_not_deadlock_or_double_boot
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it a_direct_launch_recovers_the_lease_from_a_terminated_owner
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it a_silent_process_lease_owner_causes_a_bounded_console_only_failure

- name: Remove Gateway sidecar
if: always()
run: node tools/stage-gateway-sidecar.mjs remove --target x86_64-pc-windows-msvc

- name: Clean tree
shell: bash
run: |
Expand Down Expand Up @@ -156,9 +191,27 @@ jobs:
working-directory: crates/workshop-server/ui
run: npm ci

- name: Build featureless Gateway
run: cargo build --locked -p gateway --no-default-features

- name: Stage Gateway sidecar
run: node tools/stage-gateway-sidecar.mjs stage --target x86_64-unknown-linux-gnu --source target/debug/promptforge-gateway

- name: Build (workshop, Linux)
run: cargo build --locked -p workshop

- name: Test Gateway process ownership races
run: |
cargo test --locked -p shared-sidecar a_process_lifetime_lease_recovers_after_its_owner_is_terminated
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it simultaneous_direct_launches_leave_one_owner_and_one_clean_handoff
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it workshop_launch_lock_and_direct_launch_do_not_deadlock_or_double_boot
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it a_direct_launch_recovers_the_lease_from_a_terminated_owner
cargo test --locked -p gateway --no-default-features --features test-fixtures --test it a_silent_process_lease_owner_causes_a_bounded_console_only_failure

- name: Remove Gateway sidecar
if: always()
run: node tools/stage-gateway-sidecar.mjs remove --target x86_64-unknown-linux-gnu

- name: Clean tree
shell: bash
run: |
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/dist-ci/build-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
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
- name: Install config UI dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gateway-release-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
run: |
workdir="$(mktemp -d)"
printf 'config-version = 2\n[server]\nbind = "127.0.0.1:8081"\napi_key = "test-key"\n\n[[profile]]\nname = "main"\nmodels = []\n' > "$workdir/gateway.toml"
promptforge-gateway serve "$workdir/gateway.toml" --profile main &
promptforge-gateway --config "$workdir/gateway.toml" --profile main &
server_pid=$!
trap 'kill $server_pid 2>/dev/null || true' EXIT
for attempt in $(seq 1 30); do
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ jobs:
- 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
Expand Down Expand Up @@ -97,6 +99,8 @@ jobs:
- 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
Expand Down Expand Up @@ -157,6 +161,8 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: crates/*/ui/package-lock.json

- name: Install UI dependencies
working-directory: crates/workshop-server/ui
Expand Down
Loading
Loading