The gateway service was a redundant deployment of the same
StellaOps.Gateway.WebService binary already running as router-gateway.
It served no unique purpose — all traffic is handled by router-gateway
(slot 0). This removes the container, its route table entries, nginx
proxy blocks, health/quota stubs, and redirects STELLAOPS_GATEWAY_URL
to router.stella-ops.local so the Angular frontend resolves API base
URLs through the canonical frontdoor.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded 1-5s polling constants with configurable
QueueWaitTimeoutSeconds (default 0 = pure event-driven). Consumers
now only wake on pub/sub notifications, eliminating ~118 idle
XREADGROUP polls per second across 59 services. Override with
VALKEY_QUEUE_WAIT_TIMEOUT env var if a safety-net poll is needed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add resource limits (heavy/medium/light tiers) to all 59 .NET services
- Add .NET GC tuning (server/workstation GC, DATAS, conserve memory)
- Convert FirstSignalSnapshotWriter from 10s polling to Valkey pub/sub
- Convert EnvironmentSettingsRefreshService from 60s polling to Valkey pub/sub
- Consolidate GraphAnalytics dual timers to single timer with idle-skip
- Increase healthcheck interval from 30s to 60s (configurable)
- Reduce debug logging to Information on 4 high-traffic services
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enhance ContextHeaderComponent to be the single canonical header primitive:
- Add configurable heading level (h1/h2/h3) for semantic HTML in nested shells
- Add testId input for Playwright targeting (data-testid)
- Add ARIA labels on return button and chip list (role=list/listitem)
- Add back-arrow indicator for improved return-button affordance
- Add JSDoc on all inputs for developer ergonomics
Deprecate PageHeaderComponent to a thin compatibility wrapper that delegates
to ContextHeaderComponent.
Adopt canonical header on 4 representative pages:
- RegistryAdminComponent (admin/setup surface)
- PackRegistryBrowserComponent (operational surface)
- DeadLetterDashboardComponent (operational surface)
- OfflineKitComponent (operational surface)
Each adopted page gains eyebrow breadcrumb context, consistent subtitle
placement, and projected actions via the shared header-actions slot,
replacing ~80 lines of repeated ad-hoc header markup.
15 focused component tests covering title rendering, eyebrow/subtitle
display, chips with ARIA, back action, action slot projection, heading
levels, testId, and responsive layout structure. All pass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Settings shell now owns only personal user preferences (appearance,
language, layout, AI assistant). All 14 admin/tenant/ops leaves
converted to controlled redirects pointing at their canonical owners
(Administration, Setup, Ops). Language merged into user-preferences.
Identity-providers rehomed from settings to administration as
canonical owner. Navigation config updated. 22 new route tests added.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sync TASKS.md, implementation_plan.md, and orphan-revival-batch README
to reflect all 11 shipped orphan component adoption sprints.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mount registry-admin routes under canonical /ops/integrations (and
/setup/integrations) with plans list, editor, and audit flows reachable
from integration-hub entry points.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mount deploy-diff, change-trace, and timeline under /releases/investigation
as bounded secondary routes. Timeline uses correlation-based model to avoid
collision with shipped run-workspace tab.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mount evidence-thread, auditor-workspace, and developer-workspace routes
under canonical /evidence family as drill-in lenses, not standalone shells.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace bespoke finding list in findings-container and inline table in
release-detail security tab with shared FindingListComponent and
FindingRowComponent using data adapters for type bridging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire PolicyEvaluatePanel, RemediationHint, and PolicyPackEditor into
policy-decisioning gates page and policy-studio editor within the
canonical /ops/policy shell.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire QuickVerifyDrawer, EvidenceChecklist, ProofChainViewer, and
DsseEnvelopeViewer into evidence-export, triage, and release-orchestrator
evidence-detail surfaces for richer proof verification workflows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Apply stellaopsGlossaryTooltip directive on vex-hub dashboard, trust-admin,
and policy-decisioning overview with auto-detect mode for security terms
(VEX, CVE, SBOM, DSSE, etc.).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Apply stellaAuditorOnly and stellaOperatorOnly structural directives on
evidence-audit, promotions, and evidence-export surfaces with ViewModeToggle
surfaced for persona switching.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Migrate audit-log, evidence-pack, release-list, secret-detection,
certificate-inventory, and trust-audit-log to shared FilterBarComponent
with consistent FilterOption/ActiveFilter interfaces.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace bespoke clipboard handlers, bare <code> tags, and manual
truncation with shared CopyToClipboardComponent, InlineCodeComponent,
and TruncatePipe across console-admin, offline-kit, and triage surfaces.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hand-rolled digest truncation/copy and reachability badges with
shared DigestChipComponent and ReachabilityStateChipComponent on releases
list, evidence-thread, attestation-links, and reachability-center.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>