Skip to content

chore(deps): bump praxis core to 0.5.5 and pingora fork to 0.9.0 - #1188

Merged
leseb merged 3 commits into
praxis-proxy:mainfrom
leseb:leseb/bump-praxis-0.5.5
Sep 16, 2026
Merged

leseb merged 3 commits into
praxis-proxy:mainfrom
leseb:leseb/bump-praxis-0.5.5

Conversation

@leseb

@leseb leseb commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Bumps the praxis core crates (praxis-proxy*) from 0.5.4 to 0.5.5; since 0.5.5 bumps its pingora fork to 0.9.0, the workspace pins for quixotic-plecostomus-{core,http,proxy} also move 0.8.2 → 0.9.0 to keep a single pingora_core in the graph. Adapts to the three breaking API changes in 0.5.5: FilterPipeline::build_with_chains now takes &InsecureOptions (passed config.insecure_options), AdminEndpointOptions gained a stats field (set to None), and HttpFilterContext gained prior_pre_read_mutations and upstream_reached (added to the test-context constructors). Also regenerates four filter docs where the 0.5.5 schema generator now renders the on_invalid field as its enum type name OnInvalidBehavior instead of inlining the variants.

Related issue

N/A — dependency maintenance bump.

Validation

  • Unit tests — cargo test -p praxis-ai-apis -p praxis-ai-filters -p praxis-ai-proxy -p praxis-ai-llmd-ext-proc --lib (1340 passed; the 2 credential_inject file-watcher tests fail identically on the base 0.5.4 — pre-existing macOS fsevents behavior, they pass on Linux/inotify in CI)
  • make lint
  • make doc

Checklist

  • I reviewed every changed line and can explain the change.
  • New capabilities include an example config and functional example test. (N/A — no new capability.)
  • User-facing behavior and generated documentation are updated.
  • Performance-sensitive changes include appropriate benchmark or load-test evidence. (N/A.)
  • Commits are signed and include a Signed-off-by trailer.

Breaking changes

None to praxis-ai's public config or behavior; this is an internal dependency bump that adapts call sites to praxis 0.5.5's revised APIs.

Praxis 0.5.5 bumps its pingora fork to 0.9.0, so the workspace pins for
quixotic-plecostomus-{core,http,proxy} move 0.8.2 -> 0.9.0 to keep a single
pingora_core in the graph. Adapt to three breaking API changes:

- FilterPipeline::build_with_chains now takes &InsecureOptions; pass
  config.insecure_options in the server and test-utils pipeline builders.
- AdminEndpointOptions gained a stats field; set it to None.
- HttpFilterContext gained prior_pre_read_mutations and upstream_reached;
  add them to the test-context constructors.

Regenerate four filter docs: the 0.5.5 schema generator renders the
on_invalid field as its enum type name (OnInvalidBehavior) instead of
inlining the variants.

Signed-off-by: Sébastien Han <seb@redhat.com>
@leseb
leseb requested review from a team September 15, 2026 18:01
@leseb
leseb enabled auto-merge September 15, 2026 18:10
@leseb
leseb disabled auto-merge September 15, 2026 18:11
The 0.5.5 bump's regenerated filter docs rendered the shared
`on_invalid` field as its enum type name `OnInvalidBehavior`
instead of inlining `continue | reject | error`. That output was
an artifact of a local sibling praxis checkout lacking the enum in
payload_processing; the crates.io 0.5.5 source (identical to 0.5.4
for on_invalid.rs) inlines the variants. Revert the four docs to
match what `cargo xtask lint-filter-docs` generates in CI.

Signed-off-by: Sébastien Han <seb@redhat.com>
@leseb
leseb enabled auto-merge September 15, 2026 18:41
@leseb
leseb added this pull request to the merge queue Sep 15, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 15, 2026
@hexfusion

Copy link
Copy Markdown

nice

@nerdalert

nerdalert commented Sep 15, 2026

Copy link
Copy Markdown
Member

@leseb ty! I kicked a couple of the flakes in the merge-queue job Analyze (rust) and ci-status. If I can squeeze in #980 before a release I would appreciate it! It will get distributed quota in a grid release. Im watching the queue as soon as it hits I will rebase.

Edit: The CodeQL (Analyze (rust)) might not be a flake. A quick poke around returns:

Suggested minimal fix in .github/workflows/codeql.yaml:

  - name: Perform CodeQL Analysis
    uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938
    with:
      category: "/language:${{ matrix.language }}"
      upload: ${{ github.event_name == 'merge_group' && 'never' || 'always' }}

Keep the merge_group trigger so CodeQL remains a required merge-queue gate, but skip SARIF upload for the ephemeral gh-readonly-queue ref. Normal PR and main runs will continue uploading results.

CodeQL's `Analyze (rust)` gate failed in the merge queue because the
analyze step defaults to `upload: always` and code-scanning rejects
uploads for the ephemeral `gh-readonly-queue` ref that `merge_group`
events run against. Set `upload: never` for `merge_group` (else
`always`) so the analysis still runs as a required gate while the
throwaway ref no longer attempts an upload; PR and main runs keep
uploading results.

Signed-off-by: Sébastien Han <seb@redhat.com>
@leseb

leseb commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator Author

@leseb ty! I kicked a couple of the flakes in the merge-queue job Analyze (rust) and ci-status. If I can squeeze in #980 before a release I would appreciate it! It will get distributed quota in a grid release. Im watching the queue as soon as it hits I will rebase.

Edit: The CodeQL (Analyze (rust)) might not be a flake. A quick poke around returns:

Suggested minimal fix in .github/workflows/codeql.yaml:

  - name: Perform CodeQL Analysis
    uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938
    with:
      category: "/language:${{ matrix.language }}"
      upload: ${{ github.event_name == 'merge_group' && 'never' || 'always' }}

Keep the merge_group trigger so CodeQL remains a required merge-queue gate, but skip SARIF upload for the ephemeral gh-readonly-queue ref. Normal PR and main runs will continue uploading results.

Thanks, next time feel free to directly push into my branch :)

@leseb
leseb enabled auto-merge September 16, 2026 07:26
@leseb
leseb added this pull request to the merge queue Sep 16, 2026
Merged via the queue into praxis-proxy:main with commit 62e8a95 Sep 16, 2026
34 checks passed
@leseb
leseb deleted the leseb/bump-praxis-0.5.5 branch September 16, 2026 08:42
leseb added a commit to leseb/praxis-ai that referenced this pull request Sep 16, 2026
The praxis 0.5.5 bump (praxis-proxy#1188) changed the generated rendering of the
on_invalid field from an inline variant list to the OnInvalidBehavior
type name, but did not regenerate the affected filter docs. Regenerate
a2a, anthropic_messages_format, mcp, and openai_responses_format via
cargo xtask generate-filter-docs so lint-filter-docs passes against
0.5.5.

Refs praxis-proxy#960

Signed-off-by: Sébastien Han <seb@redhat.com>
leseb added a commit to leseb/praxis-ai that referenced this pull request Sep 16, 2026
Integrate origin/main into the praxis-proxy#959 file_search outbound-chain migration.
main advanced past the branch point with the praxis 0.5.5 bump (praxis-proxy#1188,
pingora fork 0.9.0) and praxis-proxy#1162 "bound file search callout decoding", which
rewrote the same file_search_callout/client.rs decode path.

Conflicts resolved:

- apis/src/openai/responses/file_search_callout/client.rs: keep praxis-proxy#1162's
  bounded streaming DeserializeSeed decoder for the decode path and praxis-proxy#959's
  FilteredSubrequestExecutor / StagedUpstream[Fallback] outbound_chain
  fetch path. The two rewrites touch disjoint regions and share the same
  parse_response_body_with_deadline -> parse_response_body ->
  deserialize_search_results wrapper, so the result is a clean union:
  praxis-proxy#959's simple serde_json::from_slice::<VectorStoreSearchResponse> decode
  and the VectorStoreSearchResponse type are dropped, praxis-proxy#1162's
  DecodedBudget accounting and response_admission_units are kept, the old
  RESPONSE_DECODE_MEMORY_MULTIPLIER is dropped. Only the serde import block
  was a textual conflict; resolved to the union of both sides.

- tests/integration/sdk/openai/test_openai_responses_vllm.py: keep both
  main's decoded-results assertions and praxis-proxy#959's VectorStoreWitnessHandler
  outbound-chain header proof (x-vector-store-client marker).

Cargo.toml / Cargo.lock adopt main's praxis 0.5.5 + pingora fork 0.9.0.

Known follow-up: the branch still requires StagedUpstream / StagedUpstreamFallback
to be upstreamed into a praxis release before it compiles against 0.5.5 --
cargo check -p praxis-ai-apis --lib currently reports exactly one error
(E0432 for those two imports) and nothing else, confirming the integration
is otherwise coherent. Tracked on draft PR praxis-proxy#1185.

Signed-off-by: Sébastien Han <seb@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants