Skip to content

Instantly share code, notes, and snippets.

@jlmitch5
Created June 4, 2026 10:38
Show Gist options
  • Select an option

  • Save jlmitch5/aee84291ef297ad82a323c7aebd0e1b5 to your computer and use it in GitHub Desktop.

Select an option

Save jlmitch5/aee84291ef297ad82a323c7aebd0e1b5 to your computer and use it in GitHub Desktop.
Nexus GA — Road to Release Dashboard (2026-06-04)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nexus GA — Road to Release</title>
<style>
:root {
--rh-red: #EE0000;
--rh-dark: #151515;
--rh-gray: #6A6E73;
--rh-light: #F0F0F0;
--green: #3E8635;
--yellow: #F0AB00;
--red: #C9190B;
--blue: #0066CC;
--phase-done: #3E8635;
--phase-active: #0066CC;
--phase-future: #D2D2D2;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Red Hat Display', 'Segoe UI', system-ui, sans-serif; background: #FAFAFA; color: var(--rh-dark); }
.header { background: linear-gradient(135deg, #1A1A2E 0%, #16213E 50%, #0F3460 100%); color: white; padding: 2rem 2rem 1.5rem; }
.header h1 { font-size: 1.8rem; font-weight: 700; margin-bottom: 0.3rem; }
.header .subtitle { color: #A0AEC0; font-size: 0.95rem; }
.header .meta { display: flex; gap: 2rem; margin-top: 1rem; font-size: 0.85rem; color: #CBD5E0; }
.header .meta span { display: flex; align-items: center; gap: 0.3rem; }
.container { max-width: 1100px; margin: 0 auto; padding: 1.5rem; }
/* Phase Timeline */
.phase-timeline { display: flex; margin: 2rem 0; position: relative; }
.phase-timeline::before { content: ''; position: absolute; top: 24px; left: 0; right: 0; height: 4px; background: var(--phase-future); z-index: 0; }
.phase { flex: 1; text-align: center; position: relative; z-index: 1; }
.phase .dot { width: 48px; height: 48px; border-radius: 50%; margin: 0 auto 0.5rem; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1.1rem; color: white; border: 3px solid white; box-shadow: 0 2px 8px rgba(0,0,0,0.15); }
.phase.active .dot { background: var(--phase-active); animation: pulse 2s infinite; }
.phase.future .dot { background: var(--phase-future); color: var(--rh-gray); }
.phase.done .dot { background: var(--phase-done); }
.phase .label { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--rh-gray); }
.phase.active .label { color: var(--phase-active); font-weight: 700; }
.phase .name { font-size: 0.85rem; margin-top: 0.2rem; color: var(--rh-dark); }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(0,102,204,0.4); } 50% { box-shadow: 0 0 0 12px rgba(0,102,204,0); } }
/* Cards */
.card { background: white; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); margin-bottom: 1.5rem; overflow: hidden; }
.card-header { padding: 1rem 1.5rem; border-bottom: 1px solid #E2E8F0; display: flex; justify-content: space-between; align-items: center; }
.card-header h2 { font-size: 1.1rem; font-weight: 600; }
.card-body { padding: 1.5rem; }
/* Feature Grid */
.feature-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1rem; }
.feature-card { border: 1px solid #E2E8F0; border-radius: 6px; padding: 1rem; transition: box-shadow 0.2s; }
.feature-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.feature-card .name { font-weight: 600; font-size: 0.9rem; margin-bottom: 0.3rem; }
.feature-card .name a { color: var(--rh-dark); text-decoration: none; }
.feature-card .name a:hover { color: var(--blue); }
.feature-card .status { font-size: 0.8rem; color: var(--rh-gray); }
.feature-card .signal { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; }
.signal-green { background: #E6F4EA; color: var(--green); }
.signal-yellow { background: #FFF3CD; color: #856404; }
.signal-red { background: #FECDD3; color: var(--red); }
.status-badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7rem; font-weight: 600; margin-left: 0.5rem; }
.status-release-pending { background: #DBEAFE; color: #1E40AF; }
.status-in-progress { background: #FEF3C7; color: #92400E; }
/* Exit Criteria */
.criteria-list { list-style: none; }
.criteria-list li { padding: 0.6rem 0; border-bottom: 1px solid #F0F0F0; display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.9rem; }
.criteria-list li:last-child { border-bottom: none; }
.criteria-fraction { font-weight: 700; font-family: monospace; min-width: 60px; }
.criteria-met { color: var(--green); }
.criteria-partial { color: var(--rh-dark); }
.criteria-unmet { color: var(--red); font-weight: 700; }
/* Bugs Summary */
.bug-summary { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.bug-stat { text-align: center; }
.bug-stat .num { font-size: 2rem; font-weight: 700; }
.bug-stat .label { font-size: 0.75rem; color: var(--rh-gray); text-transform: uppercase; }
.bug-critical .num { color: var(--red); }
.bug-major .num { color: var(--yellow); }
.bug-total .num { color: var(--rh-dark); }
/* Risks */
.risk-item { padding: 0.8rem 1rem; background: #FEF2F2; border-left: 3px solid var(--red); border-radius: 0 4px 4px 0; margin-bottom: 0.5rem; font-size: 0.85rem; }
.risk-item .age { font-weight: 700; color: var(--red); }
/* Test Plan Progress */
.progress-bar-container { background: #E2E8F0; border-radius: 8px; height: 24px; overflow: hidden; margin: 0.5rem 0; position: relative; }
.progress-bar { height: 100%; border-radius: 8px; transition: width 0.5s; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: 700; color: white; }
.progress-merged { background: var(--green); }
.progress-inflight { background: var(--yellow); }
/* Activity Stats */
.activity-row { display: flex; gap: 2rem; margin-bottom: 1rem; }
.activity-stat { flex: 1; text-align: center; padding: 1rem; background: #F7FAFC; border-radius: 6px; }
.activity-stat .num { font-size: 1.5rem; font-weight: 700; color: var(--blue); }
.activity-stat .label { font-size: 0.75rem; color: var(--rh-gray); }
.footer { text-align: center; padding: 2rem; color: var(--rh-gray); font-size: 0.8rem; }
.footer a { color: var(--blue); text-decoration: none; }
/* Responsive */
@media (max-width: 768px) {
.phase-timeline { flex-direction: column; gap: 1rem; }
.phase-timeline::before { display: none; }
.feature-grid { grid-template-columns: 1fr; }
.bug-summary { flex-direction: column; }
.activity-row { flex-direction: column; }
}
</style>
</head>
<body>
<div class="header">
<h1>Automation Orchestrator — Road to Release</h1>
<div class="subtitle">Nexus GA Program Dashboard</div>
<div class="meta">
<span>Target: Q3 2026</span>
<span>Updated: 2026-06-04</span>
<span>Features: 11</span>
<span>Outcome: <a href="https://redhat.atlassian.net/browse/ANSTRAT-1646" style="color:#63B3ED">ANSTRAT-1646</a></span>
</div>
</div>
<div class="container">
<!-- Phase Timeline -->
<div class="card">
<div class="card-header"><h2>Release Phases</h2></div>
<div class="card-body">
<div class="phase-timeline">
<div class="phase active">
<div class="dot">0</div>
<div class="label">Current</div>
<div class="name">Development</div>
</div>
<div class="phase future">
<div class="dot">1</div>
<div class="label">Next</div>
<div class="name">Stable Branch Cut</div>
</div>
<div class="phase future">
<div class="dot">2</div>
<div class="label">Phase 2</div>
<div class="name">Hardening</div>
</div>
<div class="phase future">
<div class="dot">3</div>
<div class="label">Phase 3</div>
<div class="name">GA Tag + Async</div>
</div>
</div>
</div>
</div>
<!-- Exit Criteria -->
<div class="card">
<div class="card-header">
<h2>Phase 1 Exit Criteria</h2>
<span style="font-size:0.8rem;color:var(--rh-gray)">3 of 6 criteria progressing</span>
</div>
<div class="card-body">
<ul class="criteria-list">
<li>
<span class="criteria-fraction criteria-partial">[3/11]</span>
<div>Features in Release Pending or Closed<br>
<small style="color:var(--green)">Telemetry (ANSTRAT-1748) · Runtime Settings (ANSTRAT-1790) · Credentials (ANSTRAT-1901)</small>
</div>
</li>
<li>
<span class="criteria-fraction criteria-partial">[8/11]</span>
<div>Test plans merged to main<br>
<small style="color:var(--green)">8 merged</small> · <small style="color:#92400E">2 in-flight MRs (!245, !242)</small> · <small style="color:var(--red);font-weight:700">1 MISSING: Integration Config (ANSTRAT-1956)</small>
</div>
</li>
<li>
<span class="criteria-fraction criteria-unmet">[0/4]</span>
<div style="color:var(--red);font-weight:600">No open Critical bugs — 4 Critical bugs remain open</div>
</li>
<li>
<span class="criteria-fraction criteria-unmet">[—]</span>
<div style="color:var(--red)">Feature leads confirm GA readiness</div>
</li>
<li>
<span class="criteria-fraction criteria-unmet">[—]</span>
<div style="color:var(--red)">Release-blocker label established in Jira</div>
</li>
<li>
<span class="criteria-fraction criteria-unmet">[—]</span>
<div style="color:var(--red)">Stable-ga branch strategy defined</div>
</li>
</ul>
</div>
</div>
<!-- Test Plan Progress Bar -->
<div class="card">
<div class="card-header"><h2>Test Plan Coverage</h2></div>
<div class="card-body">
<div class="progress-bar-container">
<div class="progress-bar progress-merged" style="width:72.7%">8 merged</div>
</div>
<div style="display:flex;justify-content:space-between;font-size:0.75rem;color:var(--rh-gray);margin-top:0.3rem">
<span style="color:var(--green)">■ 8 Merged</span>
<span style="color:var(--yellow)">■ 2 In-flight</span>
<span style="color:var(--red)">■ 1 Missing</span>
</div>
</div>
</div>
<!-- Bug Summary -->
<div class="card">
<div class="card-header"><h2>Bug Health</h2></div>
<div class="card-body">
<div class="bug-summary">
<div class="bug-stat bug-total"><div class="num">50</div><div class="label">Total Open</div></div>
<div class="bug-stat bug-critical"><div class="num">4</div><div class="label">Critical</div></div>
<div class="bug-stat bug-major"><div class="num">9</div><div class="label">Major</div></div>
<div class="bug-stat"><div class="num" style="color:var(--rh-gray)">11</div><div class="label">Normal</div></div>
<div class="bug-stat"><div class="num" style="color:var(--rh-gray)">13</div><div class="label">Minor</div></div>
<div class="bug-stat"><div class="num" style="color:var(--green)">0</div><div class="label">Release Blockers</div></div>
</div>
<div style="margin-top:1rem">
<h4 style="font-size:0.85rem;color:var(--red);margin-bottom:0.5rem">Critical Bugs</h4>
<div class="risk-item"><a href="https://redhat.atlassian.net/browse/AAP-77803">AAP-77803</a> — Workflow creation is not working (In Progress)</div>
<div class="risk-item"><a href="https://redhat.atlassian.net/browse/AAP-77243">AAP-77243</a> — File-heavy invocations crash backend at 10 concurrent requests (New)</div>
<div class="risk-item"><a href="https://redhat.atlassian.net/browse/AAP-74610">AAP-74610</a> — tool_manager write endpoints have no permission checks (New)</div>
<div class="risk-item"><a href="https://redhat.atlassian.net/browse/AAP-74492">AAP-74492</a> — Agent node: file upload not working (New)</div>
</div>
</div>
</div>
<!-- Risks -->
<div class="card">
<div class="card-header"><h2>Program Risks</h2></div>
<div class="card-body">
<div class="risk-item"><span class="age">[14d]</span> Integration Configuration (ANSTRAT-1956) has no test plan — only GA feature without coverage</div>
<div class="risk-item"><span class="age">[ongoing]</span> 4 Critical bugs remain open — permission gaps, file upload broken, DB connection exhaustion</div>
<div class="risk-item"><span class="age">[7d]</span> 6 backend E2E conversion PRs aging > 7 days — test infrastructure modernization stalling</div>
<div class="risk-item"><span class="age">[ongoing]</span> File upload architecture undecided for GA scope — S3 PoC ready, no decision on tech preview vs GA</div>
</div>
</div>
<!-- Feature Grid -->
<div class="card">
<div class="card-header">
<h2>GA Features</h2>
<div>
<span class="signal signal-green" style="margin-right:0.3rem">11 Green</span>
<span class="signal signal-yellow" style="margin-right:0.3rem">0 Yellow</span>
<span class="signal signal-red">0 Red</span>
</div>
</div>
<div class="card-body">
<div class="feature-grid">
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1748">Telemetry</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-release-pending">Release Pending</span></div>
<div class="status">ANSTRAT-1748 · No new activity needed</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1790">Runtime Settings</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-release-pending">Release Pending</span></div>
<div class="status">ANSTRAT-1790 · No new activity needed</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1901">Credentials</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-release-pending">Release Pending</span></div>
<div class="status">ANSTRAT-1901 · Docs epic in discussion</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1844">Authentication</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-1844 · E2E tests expanding, session mgmt hardened</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1900">Authz & Policy</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-1900 · Massive RBAC push — 7 UI PRs merged</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1899">Installation</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-1899 · Push-button AAP config landed</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1845">Automation Mgmt</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-1845 · Node-level settings wired, aging PRs</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1740">Audits / Logging</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-1740 · Very active — 4 merged, Temporal export validated</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-2162">Versioning</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-2162 · Test plan MR !245 in-flight</div>
</div>
<div class="feature-card">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-2163">Wait/Switch/Converge</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status">ANSTRAT-2163 · Switch node catalog PR approved, test plan !242 in-flight</div>
</div>
<div class="feature-card" style="border-color:var(--yellow)">
<div class="name"><a href="https://redhat.atlassian.net/browse/ANSTRAT-1956">Integration Config</a> <span class="signal signal-green">GREEN</span><span class="status-badge status-in-progress">In Progress</span></div>
<div class="status" style="color:var(--red);font-weight:600">ANSTRAT-1956 · ⚠ MISSING test plan</div>
</div>
</div>
</div>
</div>
<!-- Today's Activity -->
<div class="card">
<div class="card-header"><h2>Today's Activity</h2></div>
<div class="card-body">
<div class="activity-row">
<div class="activity-stat"><div class="num">29</div><div class="label">PRs Merged</div></div>
<div class="activity-stat"><div class="num">15</div><div class="label">PRs Opened</div></div>
<div class="activity-stat"><div class="num">39</div><div class="label">Tickets Moved</div></div>
<div class="activity-stat"><div class="num">22</div><div class="label">Tickets Closed</div></div>
</div>
</div>
</div>
</div>
<div class="footer">
<p>Generated 2026-06-04 · <a href="https://docs.google.com/document/d/1h4jXsBUVCwF5bsHaFvhjLsklqZti2ys08cnUTESROCo/edit">Full Dashboard (Google Doc)</a> · Automation Orchestrator GA Program</p>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment