Skip to content

Fix stalled software inventory uploads and rebuild the inventory workspace - #456

Merged
Proxicon merged 15 commits into
mainfrom
fix/455-software-inventory-reliability-ux
Nov 1, 2026
Merged

Proxicon merged 15 commits into
mainfrom
fix/455-software-inventory-reliability-ux

Conversation

@Proxicon

@Proxicon Proxicon commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Closes #455

Follow-up to #452 and owner acceptance of v0.1.3-beta.3.

Root cause and reliability

  • Compare collection timestamps at PostgreSQL microsecond precision across scoped upload requests; keep the original wire hash so existing full-precision durable outboxes and duplicate acknowledgements remain compatible.
  • Preserve complete-snapshot reconciliation, tenant scoping, conflict rejection and late/out-of-order protections.
  • Bound accepted scans, surface effective timeout states on read without read-side scheduling, allow explicit retry and retain the previous complete snapshot.
  • Bound agent requests/collection, keep failure backoff, and reduce healthy work-discovery delay.

Operator UX

  • Load saved rows independently from status/refresh requests; reconnect status polling and fence cancelled tenant/search responses.
  • Reusable full-screen, single-scroll client workspace with readable status, received-chunk progress, stalled/error explanations, metadata details and explicit refresh.
  • Estate overview cards and Software / Installations / Devices / Changes views, searchable client-name picker, paged MudBlazor tables, drill-down and descriptive empty states.
  • Resolve friendly names / reported hostnames server-side for UI, CSV and existing MCP/common-client responses. Include never-scanned devices rather than treating them as empty installation search results.
  • Add tenant-authorized overview and device-coverage REST reads. Existing managed MCP operations retain their names and admission behavior.

Focused regression coverage

  • Real PostgreSQL, 205 packages, fresh DbContext for each chunk, deliberate sub-microsecond wire timestamp, duplicate replay and genuine metadata-conflict rejection.
  • PostgreSQL coverage/hostname/device queries and tenant isolation.
  • UI saved rows visible while status or refresh POST is unresolved; first-collection state and existing tenant-switch cancellation.
  • Expired-scan recovery retaining the last complete snapshot.
  • Updated canonical software inventory guide.

Validation and release scope

Validation will be recorded from the existing GitHub-hosted PR workflow; no local release builds or fabricated native acceptance results.

No version bump, tag, release publication, container publication or production deployment. Merge to main only; owner is collecting further fixes before the next beta. Live native Windows/Linux and visual deployment acceptance remain owner-run after that future release.

Proxicon commented Nov 1, 2026

Copy link
Copy Markdown
Contributor Author

Validation completed

Validated head a6eb22f0297f4897b2520c3cf034f86642c5dc50 against main at 9103886b792b62af7851d7d027e7ba6e843f50ed in Public PR validation run 41307104266.

All required jobs passed: Public disclosure gate, Source and release contracts, .NET build and tests, and the final PR validation gate.

  • Release solution build: passed, 0 errors (compiler/analyzer warnings remain).
  • Web component tests: 670 passed, 0 failed, 0 skipped.
  • Core tests: 4,724 passed, 0 failed, 0 skipped.
  • API integration tests: 36 passed, 0 failed, 0 skipped.
  • Total selected fast regression suites: 5,430 passed. All three TRX receipts were validated; no tests or CI gates were disabled.

Coverage includes the real PostgreSQL 205-package / three-chunk upload with a fresh DbContext per request, full-precision queued-payload compatibility, duplicate replay and genuine metadata-conflict rejection; cached rows rendering while status/refresh is unresolved; first-scan state; tenant authorization; hostname resolution; and timed-out scan recovery retaining the last complete snapshot.

Test receipts are retained as dotnet-test-results (CI evidence, not release binaries).

Product version remains 0.1.3-beta.3. This change is merge-to-main only: no version bump, tag, release publication, container publication, or production deployment. Native Windows/Linux collection and deployed visual acceptance have not been run on the owner's installation; those remain checks for the future beta.

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.

Fix software inventory stuck at first chunk and deliver responsive, hostname-first asset intelligence UX

1 participant