Fix journey cluster defects + UX improvements across 7 clusters
P0 fixes (clean-start + route contracts): - VexHub: fix migration 002 table name + add repair migration 003 - Gateway: add /console/admin and /api/v1/unknowns routes - IDP: add platform.idp.admin scope to OAuth client + web config - Risk: fix URL construction from authority to gateway base - Unknowns: fix client path from /api/v1/scanner/unknowns to /api/v1/unknowns P1 fixes (trust + shell integrity): - Audit: fix module name normalization, add Authority audit source - Stage: add persistence across web store, API contracts, DB migration 059 - Posture: add per-source error tracking + degradation banner P2 fixes (adoption + workflow clarity): - Rename Triage to Findings in navigation + breadcrumbs - Command palette: show quick actions for plain text queries, fix scan routes - Scan: add local-mode limitation messaging + queue hints - Release: add post-seal promotion CTA with pre-filled release ID - Welcome: rewrite around operator adoption model (Get Started + What Stella Replaces) UX improvements: - Status rail: convert to icon-only with color state + tooltips - Event Stream Monitor: new page at /ops/operations/event-stream - Sidebar: collapse Operations by default - User menu: embed theme switcher (Day/Night/System), remove standalone toggle - Settings: add Profile section with email editing + PUT /api/v1/platform/preferences/email endpoint - Docs viewer: replace custom parser with ngx-markdown (marked) for proper table/code/blockquote rendering Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,10 @@ public partial class VexHubDbContext : DbContext
|
||||
.HasDefaultValueSql("now()")
|
||||
.HasColumnName("created_at");
|
||||
entity.Property(e => e.UpdatedAt).HasColumnName("updated_at");
|
||||
entity.Property(e => e.ConsecutiveFailures)
|
||||
.HasDefaultValue(0)
|
||||
.HasColumnName("consecutive_failures");
|
||||
entity.Property(e => e.NextEligiblePollAt).HasColumnName("next_eligible_poll_at");
|
||||
});
|
||||
|
||||
// ── statements ───────────────────────────────────────────────────
|
||||
|
||||
@@ -18,4 +18,6 @@ public partial class VexSource
|
||||
public string Config { get; set; } = null!;
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
public int ConsecutiveFailures { get; set; }
|
||||
public DateTimeOffset? NextEligiblePollAt { get; set; }
|
||||
}
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
-- Sprint: Advisory & VEX Source Management
|
||||
-- Adds failure tracking columns for exponential backoff
|
||||
|
||||
ALTER TABLE vexhub.vex_sources
|
||||
ALTER TABLE vexhub.sources
|
||||
ADD COLUMN IF NOT EXISTS consecutive_failures INT NOT NULL DEFAULT 0,
|
||||
ADD COLUMN IF NOT EXISTS next_eligible_poll_at TIMESTAMPTZ NULL;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
-- Migration: 003_fix_source_backoff_columns
|
||||
-- Repairs migration 002 which referenced wrong table name (vexhub.vex_sources instead of vexhub.sources)
|
||||
-- Uses IF NOT EXISTS so this is safe on both fresh and partially-migrated databases
|
||||
|
||||
ALTER TABLE vexhub.sources
|
||||
ADD COLUMN IF NOT EXISTS consecutive_failures INT NOT NULL DEFAULT 0;
|
||||
|
||||
ALTER TABLE vexhub.sources
|
||||
ADD COLUMN IF NOT EXISTS next_eligible_poll_at TIMESTAMPTZ NULL;
|
||||
Reference in New Issue
Block a user