Skip to content

Dev - #2170

Merged
brunod-e merged 14 commits into
mainfrom
dev
Sep 30, 2026
Merged

Dev#2170
brunod-e merged 14 commits into
mainfrom
dev

Conversation

@brunod-e

Copy link
Copy Markdown
Collaborator

No description provided.

LeonardoVieira1630 and others added 14 commits September 17, 2026 15:31
Add Prometheus jobs for subscription-server, dispatcher, consumers and
logic-system (blockful/notification-system), a Notification System row in
the Grafana dashboard (scrape status, request rate, 5xx, p99 latency) and
document the NOTIF_*_ENDPOINT variables. ServiceDown already matches every
non-DAO job, so the new jobs are covered without a rule change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lugin

Add createHttpServerMetrics / createHttpServerRequestDuration, the standard
http_server_request_duration_seconds histogram with the labels the alerts and
dashboard expect, and registerFastifyMetrics under
@anticapture/observability/fastify, which serves /metrics and records every
request. Only fastify types are imported, so the entry adds no runtime
dependency (fastify is an optional peer).

Fix createObservabilityProvider registering the instrumentations before the
global meter provider was set: instruments were created on the API no-op
meter, so the HTTP auto-instrumentation never exported http_server_duration.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ystem

feat(monitoring): scrape the notification system services
Shutter's veto runs through Snapshot X: the Security Council (5-of-8 Safe
0x3ea7...c0C0) owns the Snapshot X space (0x594E...B769) and vetoes a
proposal by calling Space.cancel(proposalId) before execution. Point the
DAO Overview Security Council card at that multisig.

Unlike ENS's renewable term or Compound's guardian expiry, this veto is an
owner privilege with no fixed term. Add a `noExpiration` flag to the
securityCouncil config; when set, the card shows "No expiration" instead of
a countdown and drops the progress/danger bar (ENS and Compound keep their
expiration blocks and behavior).
Drop the separate `noExpiration` flag added in the previous commit and treat
`securityCouncil.expiration.timestamp === 0` as "no fixed term" instead. This
keeps a single source of truth (the timestamp itself) and matches the
convention useCountdown already uses (it treats timestamp <= 0 specially).
The card still shows "No expiration" and hides the progress/danger bar for
Shutter; ENS and Compound keep their real non-zero timestamps and behavior.
…gate button

The Delegate column was 96px wide in a table-fixed layout, so the button
with the gasless "Free" badge overflowed the table, got clipped by the
container and produced a horizontal scroll. The column is now 160px, the
whitelabel-only numeric columns give up a few points to the address, and
the row actions (Copy + Details) only join the row while it is hovered
instead of reserving ~130px of invisible space next to the name.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
fix(dashboard): respect each SPP program's report deadline
…card

feat(dashboard): add Shutter Security Council card
fix(dashboard): stop the whitelabel delegates table clipping the Delegate button
@vercel

vercel Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
anticapture-storybook Ready Ready Preview Sep 30, 2026 6:43pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
anticapture (dev) Ignored Ignored Sep 30, 2026 6:43pm UTC

Request Review

Copy link
Copy Markdown
Collaborator

🎨 UI Review

Automated review · Release PR (dev → main) · Reviewed the UI-visible changes only (Shutter Security Council card, whitelabel Delegates table, Service Providers due dates)
ℹ️ Reviewed without a Figma reference (no spec found in the PR body or ClickUp) and the dashboard Vercel preview was not built for this PR — review is grounded in the diff + UX-expert evaluation, so visual claims are [UX-heuristic] / [Code-only].


Overview → Security Council card (Shutter, "No expiration")

  • Progress bar still renders for a council with no term. progress and warning are forced to 0, but ProgressBar (features/dao-overview/components/ProgressBar.tsx) still draws the full-width track, the tangerine knob pinned at the far left and the "Start / Expiration" footer. A knob at 0% reads as "just started, time is running out", which is the opposite of "no expiration". Don't render the track + knob (and the gradient fill) when timestamp === 0; keep only the Start / Expiration row. [UX-heuristic]
  • Redundant label. Right column reads "Expiration" over "No expiration". Show just "No expiration" as the value under the "Expiration" label with a neutral value like —/"None", or change the label to "Term" so the value doesn't repeat the heading. (CountdownDaoInfo.tsx, <p className="text-primary text-sm font-normal leading-5">) [UX-heuristic]
  • Alignment. The "No expiration" <p> is rendered without the flex flex-col items-end wrapper the countdown uses — confirm it right-aligns with the "Expiration" label on desktop and mobile. [Code-only]

Holders & Delegates → Delegates table (whitelabel)

  • Hover now shifts layout. The copy/link row actions went from opacity-0 … [tr:hover_&]:opacity-100 to hidden … [tr:hover_&]:flex. Because they leave the flow until hover, the address name is wider at rest and gets squeezed/truncated (~130px) the moment the cursor enters the row, so the text jumps on every hover. It also drops the fade-in. Keep the actions in the layout (reserve a fixed width, opacity-0 → opacity-100) or absolutely-position them over the row end so the name doesn't reflow. (Delegates.tsx:309) [UX-heuristic]
  • Column widths. Whitelabel columns were trimmed (13→12%, 10→9%, 13→12%, 11→10%) to fit the Delegate button at w-40 (160px, was w-24). Check at 1024–1280px that numeric headers/values don't truncate and that the table still doesn't scroll horizontally. (Delegates.tsx:473, 533, 584, 627, 657) [Code-only]

Service Providers

  • Due-date chips now show the per-program deadline (e.g. SPP3 "Due by Jul 30" instead of "Due by Jun 30") — copy is consistent with the changelog. No UI change needed. [Code-only]

Mobile

  • Security Council card: verify the "No expiration" state on <1024px (card stacks, tooltip hidden) after the bar is hidden. [Code-only]
  • Delegates table: row hover actions are desktop-only (!isMobile), no mobile change.

Generated by Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7c71ed304a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@railway-app

railway-app Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

🚅 Deployed to the anticapture-pr-2170 environment in anticapture-infra

Service Status Web Updated
ens-indexer-offchain ✅ Success (View Logs) Sep 30, 2026 at 6:55 pm UTC
compound-indexer-offchain ✅ Success (View Logs) Sep 30, 2026 at 6:55 pm UTC
mcp ✅ Success (View Logs) Web Sep 30, 2026 at 6:55 pm UTC
docs ✅ Success (View Logs) Web Sep 30, 2026 at 6:55 pm UTC
uniswap-indexer-offchain ✅ Success (View Logs) Sep 30, 2026 at 6:55 pm UTC
gitcoin-indexer-offchain ✅ Success (View Logs) Sep 30, 2026 at 6:55 pm UTC
gateful ✅ Success (View Logs) Web Sep 30, 2026 at 6:55 pm UTC
nouns-api ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
user-api ✅ Success (View Logs) Web Sep 30, 2026 at 6:54 pm UTC
shutter-indexer-offchain ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
shutter-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
compound-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
lil-nouns-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
aave-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
nouns-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
gitcoin-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
lil-nouns-api ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
fluid-api ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
uniswap-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
obol-api ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
compound-api ✅ Success (View Logs) Sep 30, 2026 at 6:54 pm UTC
ens-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
shutter-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
scroll-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
fluid-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
ens-relayer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
address-enrichment ✅ Success (View Logs) Web Sep 30, 2026 at 6:53 pm UTC
aave-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
tornado-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
ens-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
tornado-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
obol-indexer ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
uniswap-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
gitcoin-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
erpc ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
scroll-api ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
prometheus 🕐 Queued (View Logs) Sep 30, 2026 at 6:53 pm UTC
nodeful ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
otelcol ✅ Success (View Logs) Sep 30, 2026 at 6:53 pm UTC
alertmanager ✅ Success (View Logs) Web Sep 30, 2026 at 6:51 pm UTC
grafana 🕐 Queued (View Logs) Web Sep 30, 2026 at 6:51 pm UTC
loki ✅ Success (View Logs) Sep 30, 2026 at 6:51 pm UTC
authful ✅ Success (View Logs) Web Sep 30, 2026 at 6:50 pm UTC
tempo ✅ Success (View Logs) Sep 30, 2026 at 6:50 pm UTC

@railway-app
railway-app Bot temporarily deployed to anticapture-infra / anticapture-pr-2170 September 30, 2026 18:47 Destroyed
@brunod-e
brunod-e merged commit dea1897 into main Sep 30, 2026
63 of 67 checks passed

This branch had an error being deployed

2 failed and 1 active deployments
anticapture-infra / anticapture-pr-2170 — 7c71ed30 Deployed Sep 30, 2026 by railway-app[bot]
Preview – anticapture-storybook — 7c71ed30 Deployed Sep 30, 2026 by vercel[bot]
anticapture-infra / dev — 7c71ed30 Deployed Sep 30, 2026 by railway-app[bot]
dev — 7c71ed30 Deployed Sep 30, 2026 by brunod-e via Deploy Vercel (dev) #149
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants