Follow-ups from the swamp-eval migration (swamp-club#4403)
model output logs shows the latest log version instead of the output's own artifact version
Manual: Sensitive Method Arguments claims a literal value is refused, but a method run accepts it
workflow run: show artifact attributes for runs through serve, and let a run leave out the "Data produced" box
Docs: what serve instances must not share, flat AWS Secrets Manager names, and where OAuth values are stored
Let a serve:* collective key look up usernames, so a recreated swamp serve does not need oauth:manage at runtime
aws-sm vault: optional secret_prefix to scope secrets within an AWS account and region
@swamp/cve http2shell, php-rce-2026-10 and tailworm: scan fails with 'Duplicate data instance name' (log and status share a name)
swamp skill: add a workspace guide and routing-table entry
stagecraft tracker: relate tickets across trackers (another repo's tracker)
serve: a capability probe answered by a follower does not speak for the leader that handles the forwarded request
serve OAuth client reuse: remaining review findings from swamp-club#4264
Agents.md: consider not using H1 'Project' inside managed block
serve: the cron-fire dedup claim has no deadline, so a hung control plane stalls every scheduled fire
serve: define what swamp serve does when its OAuth client is deleted at swamp-club
Docs: schedule catch-up and missed-fire tracking for scheduled workflows
Work-item commands run from the wrong repo report the work item as not started
Docs: step concurrency caps only that step's forEach iterations, not its whole dependency level
Package everything on ops.swamp-club.com; stop direct server edits
workflow run: let a run skip the "Data produced" box, or make it show what each artifact holds
Shorten swamp serve's token session re-check so revocation takes effect sooner
@swamp/cve/emudhra: Ubuntu's pip vendored certifi reported as exposed although pip uses the OS store
cfgmgmt firewall (ufw): an input for rule position (insert before/after)
@swamp/video: informal demos — join multiple takes into one video, and a full-length background music bed
agent-sessions: lockfile test helper silently depends on the captured @swamp/git key
agent-sessions: low-severity edge cases from the Codex importer reviews (#4158)
Team mode manual pages: swamp-serve and remote-execution for leader/follower, member checkouts, offline work, run control and known limits
Agent session record: four questions from the Codex importer (#4158)
@swamp/video: upload workflow to publish a take to YouTube (video, description, chapters, captions, thumbnail)
@swamp/video/brand: customizable outro card (next steps, headline, per-video CTA)
data prune through serve deletes data of an auto-definition whose declared type is invalid
serve: give the definition index a change signal (file watcher with a sync barrier) so a write to a definitions directory costs O(1), not a stat of every file in it
Warn when a grant with a methods list is a deny: it also refuses requests that name no method
serve reload reports 0 types reloaded when it replaced edited repo-local behaviors
@swamp/video/brand: cap each Chromium stderr line kept for errors
serve resolves realpath for thousands of files under .swamp/outputs/swamp/worker/set_status
Retention or GC for auto-definitions whose runs and data are gone
S3 and GCS: after a real commit by another writer, a serve stays off the pull fast path until it restarts
Licence header check only compares the first line of a file
CI: an accepted attestation approves the PR, and anything else fails the attestation job
artifacts.swamp-club.com unreachable in Spain during LaLiga matches (ISP blocking of Cloudflare IPs)
Supported binary file ingestion for remote members of swamp serve, without the bytes landing in run history
Worker queryData fails at the fixed 30 s RPC limit while it waits for a full catalog rebuild
Add expiring service-account token requests and authorization checks to RBAC
Reads other than findById still treat a lapsed temporary ban as active until the operative next signs in
verify-build upgrade gate silently skips models whose version is a constant
@swamp/agent-sessions: explore a decision model (TypeSafe Jev) for call labelling
agent-sessions: follow-ups from the 4211 reviews (repo resolution cache and edge cases)
agent-sessions: revisit the import's remaining review findings (redaction edge cases, import robustness)
Swamp Club collective GUI: show the swamp serve instances currently connected to a collective
A malformed --ca-cert file is reported as an unreadable OS certificate store
TLS hint blames a missing root CA and macOS for every invalid peer certificate failure
workflow cancel --server does not send SWAMP_SERVE_EXTRA_HEADERS
S3/GCS repairUnpushedFiles: the pull it asks for after a lost last-synced index does not stop it re-uploading copies a peer deleted
swamp-uat private-registry tests leave npm/<port> dirs in the shared Deno cache
A resume runs settled work after the teardown gated on it has already run, and nothing tears that work down
serve (token mode): --admins accepts idp-group entries that can never match
build-swamp-extension example: code-review isn't given the quality evidence, so the reviewer reports quality as missing
deployment: getLogs method (deployment-aware pod log tailing)
model.output.search response phase takes 3.9s for 5,000 items with no attribution (redaction vs serialization vs send)
Skill/docs: document registry listing limits, static-extraction rules, and splitting large APIs by domain
Check registry listing limits in extension quality/push and suggest splitting into per-domain extensions
Over-limit contentMetadata publishes a blank extension page; archive fallback extracts nothing
swamp inbox: with a filter active, sitting on the last row pages through the whole inbox in the background
@swamp/video/hyprland: recording hotkeys, retake marker and phone-mirror window rules
@swamp/video/obs: optional OBS recording with per-person hardware config for @swamp/video
serve daemon enable: add Windows support (service or startup task)
swamp skill docs: publishing.md contradicts itself on dynamic imports, overstates where git dependencies are listed, and never says consumers keep the publisher's bundle
extension push: the dynamic import() refusal tells authors to run swamp extension fmt, and the archive-project-file fix names the kind directory push never filters
extension push: file:, link:, workspace: and git package.json dependencies are left out of the unaudited list when the project also has a deno.json
push (Apple Containers) makes an index whose platform manifest is unpullable on Forgejo
Streak projector: incremental runs instead of a full scan every minute
Registry: detect code from outside npm and JSR in a v2 archive itself, not only from the author's dependency-audit.json
Scorecard: code past the analyzer's read caps, or unreadable, is skipped silently instead of counting as not audited
Claude audit hook misses PowerShell tool calls and sessions started above the swamp repo
access can-i: evaluate a local grants file without --server
Support search and filters as URL query parameters on /extensions
bundleExtension same-cache test can pass with a broken first-bundle gate under CPU load
Five Mongo queues can hand the same row to two replicas
Collective invite shows "This invitation has expired or has already been used" after a successful join via Google sign-in
Move the Zod argument-field extractor into @swamp-club/extension-scoring so the CLI and registry read schemas alike
serve: dispatch to an idle worker waits for its worker_busy write on the shared gateway transition tail
serve: worker enrollment resolves and creates the worker definition inside the serialized gateway transition tail
Rescore every extension's current version under rubric v5
stagecraft studio ticket columns: round-5 review lows from #3828 (source watch cost, relationText lookup, cross-instance claim)
A long-lived serve client for extensions, and a stable rate_limited error code
Support creating 1Password vaults for new clients
Generated state schemas require every child of nested objects, so normal resources warn on create/get
Add LinkedIn as a login provider
Showcase reward backfill can double-pay 5,000,000 points when replicas start together
Profile showcase read: approved list sorts on review.reviewedAt in memory
Showcase countByStatus: $match live statuses before the $group
Showcase admin queues: index-serve the updatedAt sort on approved/rejected
Annotate and retain past workflow runs and data after the fact
Skill propulsion rule is silent when no transition is satisfied because stage work is outstanding
serve shutdown does not wait for worker status writes, and its listener accepts workers after the gateway is disposed
stagecraft: rename work mode `method` to `behavior`, matching swamp's rename of models to behaviors
auth token create --json fields key and signinToken are undocumented; no token-mode service setup page
trigger.schedule is evaluated in the serve host's local time zone, with no zone field and no doc saying so
telemetry stats says "No telemetry data found" right after successful sends; say the spool is empty because it flushed
Docs: publish typed-secrets Phase 4.6 expression and delivery semantics
Extension registry page: a supported way to include media (images) in the README
Server-driven warning and info messages to CLI users, targeted by swamp version (exploration)
Serve: delegate namespace-scoped extension pulls and reload without granting administrator access
Preserve active worker execution across serve restarts and upgrades; reconnect and reattach dispatches
vary/forEach object values with no key/name/id produce data names Windows refuses
issue-lifecycle start drops issue comments: context.comments is always empty
swamp core: a non-string sensitive value reads back as a JSON string
Generated vault keys carry raw data-name and vary characters that strict vault providers reject
Multi-model skill eval: gpt-5.4 and gemini jobs fail preflight every run (OpenAI credits exhausted, Google API key invalid)
local_source_failed drops the indexing error: a transient local extension failure leaves no cause (follow-up to 1672)
Finer-grained method locking: a long-running method on one definition blocks unrelated objects managed by the same definition
Surface (or warn about) values a model method returns besides dataHandles, with sensitive-field support
workflow placement: run a workflow transparently on a specified host, local or via swamp workers (incl. nested child workflows)
issue-lifecycle: pr_merged and ship report success and advance the phase when swamp-club is unreachable, writing nothing upstream
swamp-extensions CI: Review Integrity explains a stalled or failed audit (streamed progress, timeout, did-not-finish comment)
Workflow run cancellation on concurrency-key conflict
Read non-string sensitive resource fields back with their type
Run index repair-by-stat misses an in-place, same-size record rewrite that restores mtime within the same second as its entry: ctime is reported in whole seconds
Configurable storage tiers: runs, outputs, data versions and audit move through an ordered list of user-defined tiers, and stay queryable across them
A global argument that evaluates to swamp-namespace expression text is silently dropped, and literal() cannot pass it through
serve: the per-IP WebSocket burst limit can't be configured, so workers behind one NAT IP throttle each other
S3-backed serve: a poll that pulls one file invalidates the whole data catalog, so the next query re-reads every version
extensions_search index is never created if the first attempt fails, until the process restarts
S3/GCS datastore sync: shared sync service lets one sync clear another's dirty marks and pull over unpushed files
swamp-uat: the SIGTERM drain test does not check that the run succeeded
stagecraft: a factory-wide read of work items waiting on a person (no studio, no per-item status loop)
stagecraft: rebind a work item to another tracker (mirrored built-in tickets to Jira)
s3-datastore: first push on a fresh cache prints 'Index merge failed' for a missing local .datastore-index.json
stagecraft: studio state_test 'after its event stream reconnects' is timing-flaky under load
Relationships
#3661 Dashboard: a hidden tab keeps polling and re-rendering (health stream, live run page)
Opened by swamp_lord · 10/20/2026· Shipped 10/20/2026
Found while triaging swamp-club#3660 (Workers host map leaking d3 transitions in a hidden tab). That leak is fixed separately. This issue covers the remaining work every dashboard page does while document.visibilityState is hidden. It is steady CPU and server load, not memory growth.
Observed (code reading, packages/dashboard/src)
- App.tsx calls useHealthStream() for every view. The SSE stream at /api/v1/health/stream?interval=5000 stays open while hidden, and each snapshot calls setHealth, which re-renders the whole app shell and the current view every 5 s.
- Approvals, Overview and RunDetail call useActiveRunsRefetch, so a run starting or finishing on serve triggers their refetches even while hidden.
- RunDetail polls the run every 2.5 s (LIVE_POLL_MS, usePolling) and ticks a 1 s clock (useNow) while a run is live, without checking visibility. A tab left on a long-running or stuck run polls serve all day. swamp-club#3444 moved run summaries to activity plus coming into view, but not this live poll.
- PendingSignalsPanel ticks a 1 s clock while it shows held signals.
Expected
A hidden tab does close to nothing: no 5 s re-render, no live-run polling, no clock ticks. It catches up once when it comes back into view. RunActivityProvider already tracks visibility and can drive this.
Notes
The second tab in #3660 (page not identified) used ~40% CPU and 2.1 GB. If it was not on Workers, the memory growth there is still unexplained; this issue explains only CPU.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.