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
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,11 @@ jobs:
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5

- name: Setup pnpm
uses: pnpm/action-setup@c5ba7f7862a0f64c1b1a05fbac13e0b8e86ba08c
with:
version: 10.28.1

- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/quality-gates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ jobs:

- name: Verify commands
env:
VERIFY_SKIP_REGEX: ${{ github.event_name == 'push' && '^pnpm git:guard:all$' || '' }}
# The dedicated perf-build job owns build timing. Running it again
# after coverage/UI gates produces noisy runner-load failures.
VERIFY_SKIP_REGEX: ${{ github.event_name == 'push' && '^(pnpm git:guard:all|pnpm perf:build|node scripts/perf/compare-metric.mjs .perf-baselines/build-time.json .*)$' || '^(pnpm perf:build|node scripts/perf/compare-metric.mjs .perf-baselines/build-time.json .*)$' }}
run: bash .codex/scripts/run_verify_commands.sh

- name: Generate coverage report
Expand Down
49 changes: 49 additions & 0 deletions docs/adr/0013-release-gate-dependency-security-refresh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# ADR 0013 - Release-gate dependency security refresh

## Status

Accepted

## Context

The release gate surfaced fresh dependency advisories after the shell-title
test cleanup was ready. The failing checks covered three dependency surfaces:
the JavaScript lockfile, Rust DNS/compression dependencies, and the Python
search API embedding stack.

Leaving the advisories open would keep the release branch red. Treating them
as unrelated would also make the release gate less useful, because the branch
was already exercising the dependency-health workflows.

## Decision

Keep the remediation in the release-gate cleanup branch and make the smallest
compatible updates needed for the gate to pass:

- Regenerate the pnpm lockfile with the same pnpm version used by CI.
- Upgrade `hickory-resolver` to the fixed 0.26 line and adapt the DNS resolver
wrapper to the renamed Tokio resolver API.
- Update the vulnerable `lz4_flex` transitive dependency through `Cargo.lock`.
- Keep temporary Rust audit waivers only for upstream warning-class transitives
that do not currently have direct application-level fixes.
- Upgrade the Python embedding stack to compatible current versions of
`huggingface-hub`, `sentence-transformers`, and `transformers`.

## Consequences

The dependency gate becomes current again without changing intended product
behavior. The DNS wrapper now follows the newer Hickory resolver construction
API, and the Python search API will resolve a newer embedding stack in CI.

The remaining Rust audit waivers still need periodic review through the
existing dependency-advisory process. They are documented in the audit script
instead of being hidden in CI configuration.

## Alternatives Considered

Split the dependency work into separate follow-up PRs. Rejected because the
current PR was already blocked by release-gate security checks, and keeping
the gate red would leave the branch unmergeable.

Disable or weaken the failing checks. Rejected because the checks caught real
dependency drift and should remain authoritative.
16 changes: 1 addition & 15 deletions openapi/openapi.generated.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"info": {
"title": "AssistSupport Search API",
"version": "1.2.0",
"description": "Local loopback search sidecar used by AssistSupport for hybrid KB search, feedback capture, readiness checks, and operational stats."
"description": "Local loopback search sidecar used by AssistSupport for adaptive hybrid KB search, feedback capture, readiness checks, and Knowledge diagnostics stats."
},
"servers": [
{
Expand Down Expand Up @@ -142,16 +142,6 @@
"include_scores": {
"type": "boolean",
"default": false
},
"fusion_strategy": {
"type": "string",
"enum": [
"adaptive",
"rrf",
"weighted",
"rerank"
],
"default": "adaptive"
}
}
},
Expand Down Expand Up @@ -222,7 +212,6 @@
"latency_ms",
"embedding_time_ms",
"search_time_ms",
"rerank_time_ms",
"result_count",
"timestamp"
],
Expand All @@ -236,9 +225,6 @@
"search_time_ms": {
"type": "number"
},
"rerank_time_ms": {
"type": "number"
},
"result_count": {
"type": "integer"
},
Expand Down
46 changes: 23 additions & 23 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,46 +95,46 @@
"dependencies": {
"@fontsource-variable/ibm-plex-sans": "^5.2.8",
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-dialog": "^2.6.0",
"@tauri-apps/plugin-opener": "^2",
"react": "^19.1.0",
"react-dom": "^19.1.0"
"@tauri-apps/api": "^2.11.0",
"@tauri-apps/plugin-dialog": "^2.7.1",
"@tauri-apps/plugin-opener": "^2.5.4",
"react": "^19.2.6",
"react-dom": "^19.2.6"
},
"devDependencies": {
"@axe-core/playwright": "^4.11.0",
"@axe-core/playwright": "^4.11.3",
"@commitlint/cli": "^19.8.1",
"@commitlint/config-conventional": "^19.8.1",
"@commitlint/cz-commitlint": "^19.8.1",
"@eslint/js": "^9.39.1",
"@eslint/js": "^9.39.4",
"@lhci/cli": "^0.15.1",
"@playwright/test": "^1.56.1",
"@tauri-apps/cli": "^2",
"@testing-library/react": "^16.3.0",
"@playwright/test": "^1.59.1",
"@tauri-apps/cli": "^2.11.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"@typescript-eslint/eslint-plugin": "^8.46.1",
"@typescript-eslint/parser": "^8.46.1",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@typescript-eslint/eslint-plugin": "^8.59.2",
"@typescript-eslint/parser": "^8.59.2",
"@vitejs/plugin-react": "^5.2.0",
"@vitest/coverage-v8": "^3.2.4",
"commitizen": "^4.3.1",
"eslint": "^9.39.1",
"eslint": "^9.39.4",
"eslint-plugin-react-hooks": "^5.2.0",
"globals": "^16.4.0",
"globals": "^16.5.0",
"husky": "^9.1.7",
"jsdom": "^27.1.0",
"jsdom": "^27.4.0",
"lighthouse": "^12.8.2",
"lint-staged": "^15.5.2",
"prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.7.1",
"stylelint": "^16.25.0",
"prettier": "^3.8.3",
"prettier-plugin-tailwindcss": "^0.7.4",
"stylelint": "^16.26.1",
"stylelint-config-standard": "^39.0.1",
"typescript": "~5.8.3",
"typescript-eslint": "^8.46.1",
"vite": "^7.3.2",
"typescript-eslint": "^8.59.2",
"vite": "^7.3.3",
"vitest": "^3.2.4",
"web-vitals": "^5.1.0"
"web-vitals": "^5.2.0"
},
"pnpm": {
"overrides": {
Expand Down
Loading
Loading