Skip to content

feat(dashboard): visual revamp to reference bar (adversarial-gated)#780

Open
rickylabs wants to merge 14 commits into
mainfrom
feat/dashboard-visual-revamp
Open

feat(dashboard): visual revamp to reference bar (adversarial-gated)#780
rickylabs wants to merge 14 commits into
mainfrom
feat/dashboard-visual-revamp

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Dashboard visual revamp — to the reference bar, adversarially gated

Raises the NetScript Dev Dashboard prototype to a premium operator-console quality bar (studied
against real product references), in NS One identity (warm-cream/dark, hard press shadow,
copper/teal/amber, --ns-* tokens, ns-* markup that round-trips to Fresh). Visual + layout only —
no routes/logic/data/copy changes.

What's here (this commit)

  • Baseline references + DESIGN-LANGUAGE.md, ROLLOUT-DOCTRINE.md, HOME-SPEC.md — the bar and
    the per-screen doctrine (each screen bespoke; mine a different reference each pass; no two screens
    alike).
  • DS-UPLIFT-BACKLOG.md — every new component/token/variant/option/mobile pattern the redesign
    needs, accumulated per pass. Drives a NS One design-system uplift after the prototype is signed
    off, before building the real product.
  • Per-pass reports (render/_visual-reports/*.md): V2b Home, V3 investigation spine, V4 consoles.
  • Adversarial gate: Kimi K2.6 (via OpenCode) — structural (code) + vision (screenshots) — checks
    each pass for distinctness + variety-leverage before acceptance (visual/_evals/).

Cadence

The evolving prototype source (render/prototype.dc.html + assets/*.css) and each new pass's report
are committed here as each visual pass completes (never mid-edit), with a PR comment per slice +
before/after screenshots. Passes so far: Home, spine, Workers (excellent), Sagas (being re-done as an
n8n-style node canvas). Rollout continues: control plane, AI, extensions, final polish.

The prototype is a Claude Design working record; it round-trips to @netscript/fresh-ui source later.

Baseline references, design-language + rollout doctrine, Home spec, DS-uplift
ledger, and per-pass reports (V2b Home, V3 investigation spine, V4 consoles).
Prototype source + per-pass snapshots land as each visual pass completes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Sagas (V4b) — n8n node-canvas redesign

The rejected 3-column console template is replaced by a canvas-dominant node graph: a forward-path lane + a distinct compensation/rollback lane, wired by JS-measured bezier connectors (no SVG {{ }} holes), click-a-node → properties sidebar (touching edges recolor copper), mobile → bottom sheet, fully data-driven (the no-compensation export instance renders only the forward lane). NS One identity only (--ns-* tokens, ns-* markup, warm-cream/dark, hard press shadow, copper/teal/amber); routes/data/copy-meaning unchanged.

Adversarial gate — Kimi K2.6 (vision, native OpenCode), reading the shots against the n8n flow-builder + Kafka-console references: ACCEPT-WITH-FIXES, bespoke 74/100. Confirmed genuinely saga-tailored. One real defect: ~75–80% of the canvas is empty dotted grid → fails the "dense, no dead space" bar.

Gate-directed fix pass now in flight:

  • Fill the void (mined from ref-21 n8n / ref-11 console): definition mini-map with active-path overlay, a per-lane compensation-health stat strip (avg latency / retry rate / compensation success %), richer edge error badges (e.g. E_TIMEOUT on the reserving → refund wire), a slim step execution rail, and ghost-node outlines for queued/terminal states so the graph owns the canvas.
  • Variety-leverage: replace the airy step-timeline bullet list with a dense sortable step-history table (ref-11), tab the right detail panel (State / Transitions / Grounded / Actions), and give nodes stronger color identity (forward teal-tinted, compensation copper-tinted, terminal neutral) per ref-21 — within NS One tokens.

Source snapshot + refreshed screenshots land after the fix pass. Report: V4b-sagas-canvas.md · gate transcript: V4b-adversarial-vision.md.

Sagas capability screen rebuilt as a canvas-dominant n8n-style node graph
(forward + compensation lanes, JS-measured bezier connectors, click-to-open
tabbed inspector, mobile bottom sheet, fully data-driven), then density-fixed
and every section made bespoke:

- canvas coverage 29%→47%: definition mini-map, per-lane compensation-health
  stat strips, E_TIMEOUT edge badges, step-execution rail, ghost-node outlines
- 4 plain metric cards → saga-health band (comp-rate donut, in-flight/terminal
  split, instances-by-state channel bar, forward/rollback edge ratio)
- airy step list → dense sortable step-history table; transitions → typed
  transition stream (advance→ / compensate↩ / terminal◼), grouped by instance

Adversarial vision gate (Kimi K2.6, native OpenCode) across the n8n +
dev-console + pm-dashboard references: ACCEPT-WITH-FIXES, bespoke 82/100,
canvas density now passing. Residual chrome-polish prescriptions logged for
the final sweep. NS One identity only; routes/data/copy unchanged; no SVG holes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Sagas — accepted at bespoke 82/100 (committed b33a1338)

Density fix + whole-screen-bespoke pass landed. The empty-grid dead-space is resolved (canvas coverage 29%→47%; the stronger gate now rates canvas density passing, <5% empty). Surrounding chrome rebuilt bespoke:

  • 4 plain metric cards → saga-health band (compensation-rate donut, in-flight/terminal split, instances-by-state channel bar, forward/rollback edge ratio)
  • per-lane compensation-health stat strips, E_TIMEOUT edge badges, step-execution rail, ghost-node outlines, definition mini-map + legend
  • airy step list → dense sortable step-history table; transitions → typed transition stream (advance→ / compensate↩ / terminal◼)
  • tabbed node inspector (State / Transitions / Evidence / Actions); mobile bottom sheet

Gate — now emits a concrete component-prescription table (≥8 rows) naming exact elements in named references (n8n flow-builder / Kafka dev-console / pm-dashboard), fed a diverse ref set via native OpenCode Kimi K2.6 vision: ACCEPT-WITH-FIXES, bespoke 82/100 (↑ from 74). Transcript: visual/_evals/V4b-fix-adversarial-vision.md.

Residual is chrome polish (stat-cards → click-to-filter bar; transition-stream → timeline connectors; payload → syntax-highlighted editor; retry → action palette) — logged for the final polish sweep rather than gold-plating one screen. Moving to the next screen.

…5→62)

Triggers capability screen rebuilt with its own composition (distinct from the
Sagas node-canvas and Workers registry):

- tinted category-health band (Schedule/Webhook/Event/Manual) with per-type
  sparkbars, armed/silenced pills, click-to-filter
- WHEN→DO rule builder (event → condition chip → action) + action-type palette
- schedule day-strip (7-day next-fire horizon) + temporal next-fire cards with
  progress-to-fire bars
- dense sortable firing-history table with a wired query toolbar (quick-search,
  outcome filter, show-limit) and per-row 24h sparklines + inline arm switches
- iconified metric strip (shield/flame/alert + micro-sparkline + trend)
- dead-letters as a compact mini-table (error snippet, age, retry-count, retry/
  inspect) + depth summary
- tabbed detail drawer (action-chain / payload / schedule) → mobile bottom sheet

Adversarial vision gate (Kimi K2.6, native OpenCode) across n8n / dev-console /
pm-dashboard refs: first pass 55 → focused fix pass resolved all five concrete
defects → 62, ACCEPT-WITH-FIXES. Residual gate asks (node-graph builder, code-
editor test box, segmented row bars) are subjective/gold-plating and are logged
for the final polish sweep. NS One tokens only; routes/data/copy unchanged; no
SVG holes; 16-route regression clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Triggers — accepted (committed e0da07c4)

Bespoke rules-and-firings console — its own composition, not a Sagas/Workers clone:

  • category-health band (Schedule/Webhook/Event/Manual: per-type sparkbars, armed/silenced pills, click-to-filter)
  • WHEN→DO rule builder (event → condition chip → action) + action-type palette
  • schedule day-strip (7-day next-fire horizon) + temporal next-fire cards with progress-to-fire bars
  • dense firing-history table + a wired query toolbar (quick-search, outcome filter, show-limit) + per-row 24h sparklines + inline arm switches
  • iconified metric strip (shield/flame/alert + micro-sparkline + trend)
  • dead-letters mini-table (error snippet, age, retry-count, inline retry/inspect) + depth summary
  • tabbed detail drawer (action-chain / payload / schedule) → mobile bottom sheet

Gate (native OpenCode Kimi K2.6 vision, diverse refs): first pass 55 → focused fix pass resolved all 5 concrete defects → 62, ACCEPT-WITH-FIXES. Remaining gate asks (turn the builder into a full node-graph, a code editor in the webhook test box, segmented row bars) are subjective/gold-plating — logged for the final polish sweep rather than looping one screen against an insatiable gate. Transcripts: V5-triggers-adversarial-vision.md, V5-triggers-fix-adversarial-vision.md.

Next: Streams.

… 72)

Streams rebuilt as a topic console — every section stream-native and distinct
from all neighbours:

- streams-health composite header (throughput sparkline / consumer lag + back-
  pressure / partition pips / retention) — not plain number cards
- live throughput hero: JS-measured teal area chart + hover crosshair + floating
  value readout + peak/avg/floor footer + backpressure pill
- producer → partitioned-log → consumer topology fan-bus (per-group lag)
- partition & offset ledger with inline lag heat-bars
- partition × time lag heatmap
- consumer-group radial lag gauges (Consumers tab)
- live event tail (monospace records) + fan-out delivery drawer (per-consumer
  attempt/outcome) → mobile bottom sheet
- Config tab: KV + line-numbered Avro schema

Adversarial vision gate (Kimi K2.6, native OpenCode) vs Kafka-console + finance
refs: 72/100 ACCEPT-WITH-FIXES; strong bespoke bones confirmed. Residual polish
(throughput time-range pills, live-tail filter bar, denser message panel) logged
to visual/_evals/POLISH-SWEEP.md for the final sweep. NS One tokens only; routes/
data/copy unchanged; no SVG holes; 16-route regression clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Streams — accepted at gate 72/100 (committed 1c50218b)

Bespoke durable-stream topic console — every section stream-native, distinct from all neighbours:

  • streams-health composite header (throughput sparkline / consumer-lag + backpressure / partition pips / retention)
  • live throughput hero — JS-measured area chart + hover crosshair + value readout + peak/avg/floor footer + backpressure pill
  • producer → log → consumer topology fan-bus (per-group lag)
  • partition & offset ledger with inline lag heat-bars + partition × time lag heatmap
  • consumer-group radial lag gauges (Consumers tab)
  • live event tail + fan-out delivery drawer (per-consumer attempt/outcome) → mobile bottom sheet
  • Config tab: KV + line-numbered Avro schema

Gate: 72/100 ACCEPT-WITH-FIXES — bones confirmed genuinely bespoke (topology, ledger, heatmap, fan-out). Residual polish (throughput time-range pills, live-tail filter bar, denser message panel) logged to visual/_evals/POLISH-SWEEP.md for the final sweep. Transcript: V6-streams-adversarial-vision.md.

Next: Config Resolution.

…xed (gate 68)

Config Resolution rebuilt around a novel, signature precedence-waterfall
metaphor (distinct from the four consoles):

- precedence waterfall: framework → package → env·profile → runtime override on
  a numbered rail; the winning layer is elevated with the hard press-shadow,
  shadowed values are struck through with source:line provenance, and non-
  contributing (not-set / passes-through) layers collapse to slim pips so
  partial-resolution states carry no dead space (silent-layer space −49%)
- effective-config table with namespace filters + winning-layer chips; effective
  values in DM Mono with type-color (numbers amber / strings teal / booleans copper)
- KPI header with supporting micro-viz (namespace ticks, override pips, a
  shadowed/total meter, precedence diamonds)
- framed side-by-side override diff (context lines + pink/green gutter, DM Mono),
  shown only when a runtime override wins
- resolution trail + detail drawer → mobile bottom sheet; fully data-driven per key

Adversarial vision gate (Kimi K2.6, native OpenCode) vs code-diff / console /
flow refs: 68/100 → focused density fix resolved the concrete hits (collapse
not-set layers, denser KPIs, framed diff, mono type-color). Deferred asks (node-
graph rail, inline override editor) logged to POLISH-SWEEP.md. NS One tokens only;
routes/data/copy unchanged; no SVG holes; 16-route regression clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Config Resolution — accepted (committed ee8f8ace)

A novel precedence-waterfall metaphor — visually distinct from all four consoles:

  • precedence waterfall: framework → package → env·profile → runtime override on a numbered rail; the winning layer is elevated (press-shadow), shadowed values struck through with source:line provenance, and non-contributing (not-set / passes-through) layers collapse to slim pips so partial-resolution states carry no dead space (silent-layer space −49%)
  • effective-config table with namespace filters + winning-layer chips; values in DM Mono with type-color (numbers amber / strings teal / booleans copper)
  • KPI header with micro-viz (namespace ticks, override pips, shadowed/total meter, precedence diamonds)
  • framed side-by-side override diff (context lines + pink/green gutter), shown only when a runtime override wins
  • resolution trail + detail drawer → mobile bottom sheet; data-driven per key (override-wins vs package-wins verified)

Gate: 68/100 → focused density fix resolved the concrete hits (collapse not-set layers, denser KPIs, framed diff, mono type-color). Deferred asks (node-graph rail, inline override editor) → POLISH-SWEEP.md. Transcript: V7-config-adversarial-vision.md.

Next: Migrations.

…-fixed (gate 62)

Migrations rebuilt around a bespoke migration version-chain timeline (distinct
from the Config waterfall and the capability consoles):

- version-chain timeline: applied spine (v1→v2→v3) → a slim LIVE DB · HEAD drift
  divider → a dashed-copper pending queue; each node carries an inline metadata
  row (objects-changed · rows-affected · duration + applied-at) so it earns its
  height with data, not padding
- schema-drift half-ring arc-gauge (n drifted / m-of-k objects in sync) + per-
  object drift deltas (has → wants, struck-through)
- header composite with supporting micro-viz (applied ratio bar, pending/drift
  pips, relative-time hint) — not plain number cards
- "1 migration pending" apply card with a what-will-change preview + CLI
- dense migration ledger table; per-migration detail drawer with the DDL diff
  correctly DEMOTED to a secondary tab → mobile bottom sheet

Adversarial vision gate (Kimi K2.6, native OpenCode) vs timeline / console /
diff refs: 62/100 → focused density fix (compact nodes w/ metadata, denser
header, slim divider). Gold-plating asks (ledger inline-diff, docs-tabs, DDL
editor chrome, invented author/step data) declined → POLISH-SWEEP.md. Also
front-loaded density defaults into ROLLOUT-DOCTRINE for future first passes.
NS One tokens only; routes/data/copy unchanged; no SVG holes; 16-route clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Migrations — accepted (committed e6568825)

A bespoke migration version-chain timeline — distinct from the Config waterfall and the consoles:

  • version-chain timeline: applied spine (v1→v2→v3) → a slim LIVE DB · HEAD drift divider → a dashed-copper pending queue; each node carries an inline metadata row (objects-changed · rows-affected · duration + applied-at) so it earns its height with data, not padding
  • schema-drift arc-gauge (n drifted / m-of-k in sync) + per-object drift deltas (has → wants, struck)
  • header composite with micro-viz (applied ratio bar, pending/drift pips, relative time)
  • apply card with a what-will-change preview + CLI; dense migration ledger; detail drawer with the DDL diff correctly demoted to a secondary tab → mobile sheet

Gate: 62/100 → focused density fix (compact nodes w/ metadata, denser header, slim divider). Gold-plating (ledger inline-diff, docs-tabs, DDL editor, invented author/step data) declined → POLISH-SWEEP.md. I also front-loaded the gate's recurring density feedback into ROLLOUT-DOCTRINE.md so future first passes land denser. Transcript: V8-migrations-adversarial-vision.md.

Next: Dead-Letter Queues.

…(gate 62, accepted on verified density)

DLQ rebuilt as an operational triage console — distinct from every prior screen:

- error-signature CLUSTER list (the signature): failures grouped by error mode
  (E_CONN ×3, E_TIMEOUT ×2 …) with source chips, a death sparkbar, age range, and
  per-cluster Retry-all / Purge + click-to-filter — not a flat list
- triage strip: composite tiles with a by-queue split micro-bar, retry-exhausted
  pips, and a red arrival sparkbar (no plain number cards)
- queue-health fill-meters (redis ELEVATED / postgres LOW / kv CLEAR) with depth-
  vs-capacity + trend sparkbar + oldest age (horizontal meters kept deliberately
  distinct from Migrations' arc gauge)
- dense failed-message table with retry pips + severity rails + bulk-select sticky
  bar; message inspector (payload JSON + retry-history timeline + gated reprocess/
  purge) → mobile bottom sheet
- data-driven: populated, all-clear, and filtered-empty states all render

Adversarial vision gate: 62/100. Accepted on verified density (9/10) — the gate's
major asks were already present (micro-viz, cluster severity borders), functionally
wrong (remove bulk-select checkboxes), or variety-declined (arc gauges). Two trivial
residuals (frame payload JSON, connect retry timeline) logged to POLISH-SWEEP.md.
NS One tokens only; routes/data/copy unchanged; no SVG holes; 16-route clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Dead-Letter Queues — accepted on verified density (committed 9b3d5427)

An operational triage console, distinct from every prior screen:

  • error-signature clusters (the signature): failures grouped by mode (E_CONN ×3, E_TIMEOUT ×2…) with source chips, death sparkbar, age range, per-cluster Retry-all/Purge + click-to-filter
  • triage strip with by-queue split micro-bar, retry-exhausted pips, arrival sparkbar
  • queue-health fill-meters (redis ELEVATED / postgres LOW / kv CLEAR) — kept horizontal on purpose so DLQ ≠ Migrations' arc gauge
  • dense failed-message table (retry pips + severity rails + bulk-select) + message inspector (payload JSON + retry-history timeline + gated reprocess/purge) → mobile sheet

Gate: 62/100 — accepted on verified density (9/10). The gate over-reached: its major asks were already present (micro-viz, cluster severity borders), functionally wrong (it wanted to remove the bulk-select checkboxes that make triage work), or variety-declined (arc gauges). Two trivial residuals (frame payload JSON, connect retry timeline) → POLISH-SWEEP.md. This is where the gate's absolute score stops being reliable and judgment takes over. Transcript: V9-dlq-adversarial-vision.md.

Next: Catalog.

…ted on verified quality)

Catalog rebuilt as a contract-registry explorer — distinct from every monitoring
screen (browse → drill into a contract, not a console):

- header composite: by-kind distribution channel-bar (click-to-filter) + describe()
  coverage ratio meter + REST/RPC/SDK transport-reach tri-meter (no plain cards)
- filter toolbar: search + kind/method/coverage chips + reset; live-filters the
  rail, hides empty groups, has a no-results state
- grouped registry rail: kind-grouped, method-tinted selectable contract cards
  (method chip + mono proc + input→output preview + duality tri-pip + coverage dot)
  + per-group coverage micro-bar + gated "install crons" affordance
- contract detail: version + compat chip, method/transport strip, a line-numbered
  TYPE-COLORED signature + secondary schema, and a producers→consumers strip
- mobile bottom sheet with the full signature/schema/relationships

Adversarial vision gate: 62/100. Accepted on verified quality (9/10). The gate
over-reached with OFF-DOCTRINE asks — raw-hex green buttons, a centered modal to
replace the intentional mobile bottom sheet, converting the bespoke registry rail
into a generic table (would echo the consoles), and a schema diff (Config owns that
pattern) — all declined and logged to POLISH-SWEEP.md; one valid residual (tighten
the stat strip) kept. NS One tokens only; routes/data/copy unchanged; no SVG holes;
16-route regression clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Catalog — accepted on verified quality (committed b61667dc)

A contract-registry explorer — distinct from every monitoring screen:

  • header composite: by-kind distribution channel-bar (click-to-filter) + describe() coverage ratio meter + REST/RPC/SDK transport-reach tri-meter
  • filter toolbar (search + kind/method/coverage chips) that live-filters the rail + hides empty groups
  • grouped registry rail: method-tinted contract cards (method chip + mono proc + input→output preview + duality pips + coverage dot) + per-group coverage bars + gated "install crons"
  • contract detail: version + compat chip, method/transport strip, a line-numbered type-colored signature + schema, and a producers→consumers strip → mobile sheet

Gate: 62/100 — accepted on verified quality (9/10). The gate over-reached with off-doctrine asks: raw-hex #22c55e green buttons, a centered modal to replace the intentional mobile bottom sheet, converting the bespoke registry rail into a generic table (would echo the consoles), and a schema diff (Config owns that pattern). All declined → POLISH-SWEEP.md; one valid residual (tighten the stat strip) kept. The gate now reliably catches real defects on weak screens but applies a generic wishlist to strong ones, so I'm filtering it against NS One + the variety mandate. Transcript: V10-catalog-adversarial-vision.md.

Next: Auth Sessions.

…ccepted on verified quality)

Auth Sessions rebuilt as a session-security console — a live TTL/expiry idiom
that appears on no other screen:

- header composite: status-distribution channel bar (active/expiring/idle/revoked
  · click-to-filter) + elevated-scope meter + MFA-coverage meter + an expiry-
  horizon strip (sessions sorted soonest-to-expire w/ TTL bars) + a pulsing
  server-clock chip + gated Revoke-all
- identity-forward roster cards: avatar + device glyph + provider + geo + MFA +
  a live TTL countdown bar (hatched when expiring) + scope chips + status + revoke
- session detail: a lifespan visualization (issued → TTL → expires, elapsed-hatch
  vs remaining-fill + now-marker), a KV grid, granted scopes, a lifecycle timeline,
  gated revoke → mobile bottom sheet
- data-driven: active/expiring/idle/revoked + filtered-empty states all render

Adversarial vision gate: 64/100. Accepted on verified quality (9/10). The gate
over-reached (convert the identity-forward cards into a generic table — would echo
the consoles; off-domain provider brand icons; call the micro-viz header "fat
cards"). One valid residual — the peripheral Auth event stream is sparse — deferred
with two minor items to POLISH-SWEEP.md. On-palette (no off-doctrine green), mobile
bottom sheet. NS One tokens only; routes/data/copy unchanged; no SVG holes; 16-route clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Auth Sessions — accepted on verified quality (committed 4c542c30)

A session-security console — a live TTL/expiry idiom that appears on no other screen:

  • header composite: status-distribution bar (click-to-filter) + elevated-scope + MFA-coverage meters + an expiry-horizon strip (soonest-to-expire TTL bars) + pulsing server-clock + gated Revoke-all
  • identity-forward roster cards: avatar + device glyph + provider + geo + MFA + a live TTL countdown bar + scope chips + revoke
  • session detail: a lifespan viz (issued → TTL → expires, elapsed vs remaining + now-marker), KV grid, scopes, lifecycle timeline, gated revoke → mobile sheet

Gate: 64/100 — accepted on verified quality (9/10). The gate over-reached (convert the identity-forward cards into a generic table — would echo the consoles; off-domain provider brand icons; called the micro-viz header "fat cards"). One genuinely valid residual — the peripheral Auth event stream is sparse — deferred with two minor items to POLISH-SWEEP.md. Transcript: V11-auth-adversarial-vision.md.

Next: Extensions.

…fixed (gate 58)

Extensions rebuilt as a contribution-manifest console (not an app-store grid) —
each extension is a provider that mounts contributions into named host surfaces:

- header composite: contributions-by-surface channel bar (click-to-filter) +
  enabled-coverage meter + a compatibility alert (held/quarantined update)
- Providers view: provider roster with a per-provider surface-typed contribution
  micro-bar (copper=panel / teal=command / amber=tool) + surface pips + status,
  and a sticky manifest (source/version/tier/contract + surface-grouped
  contributions + "plugs into" mount chips + gated toggle)
- Surfaces view: the cross-cut — Panels / Commands / AI-tools lanes, each with a
  share-meter + mount-summary header and a provider-provenance footer
- Available view: install/quarantine cards with a contract-compatibility meter
  (built-for fill + host "now" marker)
- mobile bottom sheet with the full manifest

Adversarial vision gate: 58/100 → focused density fix (kept the manifest idiom,
declined convert-to-table / avatars / timeline). Provider cards 88→59px, micro-bar
8→4px, CONTRIBUTES rows 64→44px, and the Surfaces-view lower-right whitespace
372→~5px via a 2-column independent-height lane split with lane meters + footers.
NS One tokens only; routes/data/copy unchanged; no SVG holes; 16-route clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
@rickylabs

Copy link
Copy Markdown
Owner Author

Extensions — accepted (committed d6bc021b)

A contribution-manifest console (not an app-store grid) — each extension is a provider that mounts contributions into named host surfaces:

  • header composite: contributions-by-surface bar (click-to-filter) + enabled-coverage meter + a compatibility alert (held/quarantined update)
  • Providers view: roster with a per-provider surface-typed contribution micro-bar (copper=panel/teal=command/amber=tool) + a sticky manifest (source/version/tier/contract + surface-grouped contributions + "plugs into")
  • Surfaces view: the cross-cut — Panels/Commands/AI-tools lanes with share-meter headers + provider-provenance footers
  • Available view: install/quarantine cards with a contract-compatibility meter

Gate: 58/100 → focused density fix (the gate was more right than its recent over-reaches). Kept the manifest idiom (declined convert-to-table / avatars / timeline); provider cards 88→59px, micro-bar 8→4px, CONTRIBUTES rows 64→44px, and the Surfaces-view lower-right whitespace 372→~5px via a 2-column lane split with lane meters + footers. Transcript: V12-ext-adversarial-vision.md.

Next: Runtime Config.

rickylabs and others added 4 commits July 14, 2026 08:51
…T-5.6-sol)

First feature of the design-quality refinement pass. GPT-5.6-sol·medium, grounded
in the repo design skill (+ impeccable anti-slop hygiene), the slop checklist, and
the REAL @netscript/fresh-ui component grammar (card.css/badge.css/etc.):

- colored + rounded card borders → flat Card grammar (--ns-card + --ns-shadow-xs,
  zero outer border/radius, hairline --ns-border internal rules)
- decorative glyphs / colored side-rails removed; metadata recast as 4px DM Mono
  UPPERCASE tags (not rounded pills)
- 3+ competing accents → ONE chromatic signature (the contributions-by-surface bar);
  everything else neutral ink-on-cream (passes the Squint Test)
- one hard-offset 3px 3px 0 press-shadow, on the single Install action (verified)
- marketing copy → factual dev-side ("Installed add-ons and the host surfaces they extend")

All 12 slop-checklist items PASS with computed-style verification (border-radius:0,
one press-shadow, DM Mono tags); 16-route regression clean. (Also carries the prior
Runtime V13 override-store redesign, which is next in line for the same refinement.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTiQfrNFCVhjQFqbLKm5xo
…98 (Codex 5.6 high + Kimi loop); bars→ns-data-table records, text facts, one signature
…nt rethink, Kimi-validated (Codex 5.6 high batch, partial)
Catalog, Config Resolution, Dead-Letter Queues, Triggers, Streams, Sagas,
Auth Sessions, Home, Live Flow, Run Inspector — component rethink grounded in
@netscript/fresh-ui + the design skill (anti-slop + not-lifeless calibration),
straight-through (no adversarial loop). Source only; local-render vendoring
kept out of the PR.
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.

1 participant