v4.4.15
v4.4.15 — Findings consistency, pagination, and workspace stability
Two specs land in this release.
findings-consistency-and-pagination — what users will see
- Pagination on the Findings page:
[25, 50, 100, 200]rows per page (default 50), URL-synced via?page=&size=. - Counter flicker eliminated. The Findings and Overview totals widgets keep prior data during refetches (
keepPreviousData), so the visible total no longer drops to zero between background polls. - Findings deduplicate across runs by
(target, endpoint, title, severity). The surviving row links to the most recent producing scan. - Stable on-disk totals via the new
/api/findings/summaryendpoint with deduped counts and ETag/304 polling. - Counter monotonicity per scan.
effectiveVulnCount(inst, sess)consolidates the previous triple-sourceinst.VulnCountassignments. Counters now read in-memory while the scan is running and on-disk after teardown — they never visibly drop without a delete. - Panic-safe persistence of child findings.
reporting.PromoteToParentis invoked on every successfulreport_vulnerabilityso a child scan's findings reach the parent aggregate immediately. Combined withMergeVulnsToContextrunning in deferredcleanup()under independentsafe.Recoverboundaries, parent records survive child agent panics. - Legacy
~/xalgorix-data/import. On first start after upgrade, scan records under the legacy directory are non-destructively copied intocfg.DataDir. A sentinel file.legacy-importedprevents repeated walks. The legacy directory is preserved; remove it manually withrm -rf ~/xalgorix-dataafter verifying the import via the WebUI banner.
xalgorix-stability-and-workspace-isolation — under the hood
safe.Recoverpanic boundary + counters (PanicsRecovered,PathRejections,WatchdogKills,AdmissionRefusals).sandbox.Policypath allow-list checks for every fs-touching tool.- Tool I/O bounded via
iolimit(1 MB stdout / 512 KB stderr). - Per-context terminal/python/fileedit working dirs (no more
~/.tmp,~/.cacheleaking into$CWD). - LLM in-flight semaphore (
XALGORIX_LLM_MAX_INFLIGHT). - HTTP middleware panic recovery.
- Workspace default moved to
~/.xalgorix/datawith migration warning for legacy markers. - Health endpoint exposes counters +
data_dir+allow_list.
Verification
go vet ./...cleango build ./...cleango test ./... -count=1— all 26 packages passgo test -raceonweb/reporting/agent— no races- WebUI typecheck + build clean
Changes
Notes
- Property tests P1–P7 are documented in
.kiro/specs/findings-consistency-and-pagination/design.mdand remain optional/deferred. - Specs live under
.kiro/specs/{xalgorix-stability-and-workspace-isolation,findings-consistency-and-pagination}/.