#1376
CLI: swamp invite <email> to drive the platform-invite API
#1337
Hide enterprise (SSO) operatives from announcements and leaderboard by default
#1294
Expose the swamp.club feed as an RSS feed
#1246
Docs: manual should state workflow unknown keys are rejected and placement is step-only (follow-up to #1240)
#1276
ExtensionInfo.latestVersion typed 'string' but registry returns null; harden pull/resolve for prerelease-only extensions
#1256
Profile stats: per-user daily rollup table + MV in ClickHouse
#1255
Reconcile collective-token CLI activity to members (attribute → bonus → stamp → even-split)
#1254
Telemetry stats consumer: insert_id dedup commits before the write it guards — any upsert failure is silently swallowed on retry
#1235
CLI telemetry: fold third-level verbs into subcommand + canonicalize aliases
#1229
Docs: swamp skill repo-structure reference still documents repo-local .swamp/telemetry/ as live
#1129
Docs: document user-global telemetry (telemetry.yaml opt-out, spool location, telemetry stats behavior)
#1082
score_daily rollup strands stale grains when a day-less grant re-stamps onto a later day
#1093
swamp-club: global rate limiter runs pre-auth and collapses all direct clients into one per-IP bucket — 429s authenticated CLI traffic
#958
feed_post_score_events queue grows unboundedly (no TTL, no delete-on-delivery)
#954
@-mention autocomplete for users when writing lab ripples
#959
Remove comments from /feed and redesign the page
#875
Score-refresh consumer: harden coalescing against a diverse backlog (bistability)
#844
Remove feed comments — consolidate discussion in Discord
#956
Relax the profanity filter
#736
Extension search returns edit-distance noise for short queries ("asdl" → "AWS DEADLINE")
#828
Telemetry recoverOrphaned startup race with multiple replicas (created_at-based)
#827
Telemetry retry/failed path has the same non-atomic claim as #820
#1205
Dead code: CollectivesSection island (pending-invite prompt) is never mounted; listPendingInvitationsByEmail has no production consumer
#1204
Collective invite emailed-link return path is dropped: /accept-invite sends ?returnUrl= but /login reads ?redirect=
#1125
Telemetry silently dropped outside a swamp repo — lost events + undercounted scores
#1120
serve: create*Deps() factories leak file-based catalog stores (3 FDs) per API request
#1121
flaky test: manual_approval suspension test leaks 3 timers (OTel InMemorySpanExporter setTimeout)
#1123
flaky test: serve OAuth client tests leak unconsumed fetch response bodies (+ connection_test readDir leak)
#1118
serve leaks file descriptors (EMFILE) — runFileSink.unregister runs after yield, not in finally
#1092
swamp-club: /api/whoami 500s on fresh install — ensureIndexes {id:1} conflicts with migration 012 id_lookup index
#1091
data prune --json omits reclaimedModels[].modelName when a report entry is grouped first
#1083
One-time prod data checks: github:-authored lab issues blast radius + legacy uppercase extension names
#1058
Serve leaderboard locate ('find yourself') live, retiring its per-replica standings cache
#1055
Serve leaderboard live from the score_daily rollup — retire per-pod snapshot & campaign-blind board fallback
#1012
Docs: document swamp data prune (orphaned-data reclamation)
#1011
UAT: CLI coverage for swamp data prune (orphaned-data reclamation)
#978
Leaderboard search excludes ghosts — a visible ghost can't be found by its alias
#973
issue-lifecycle: plan lifecycle entry silently dropped when summary exceeds 1000 chars
#967
$identify events are never consumed — anonymous web history never binds to the account
#957
Make paid subscribers visually stand out (badge, profile popup summary)
#955
Giphy integration via /giphy command
#950
/lab shipped list is sorted by issue number, not ship date
#924
Collscan/index-gap pack: unindexed $or id branches (every registry request), computed-field sort kills extension browse indexes, $expr blocks pull counts, apikey.userId, workflow_runs, 1100-doc profile fetch
#926
Request-path external fetches with no timeout / no negative cache: profile GitHub/Discord resolution and landing-page total count (30s → 504 mechanism)
#921
Auth hot path: 7 serial Atlas round trips per API-key request; session cookie cache dies after 5 min; session/apikey lookups unindexed
#923
Leaderboard: window boards are unindexed full-collection aggregations ×4 per locate miss; locate fetches 4×10k rows to rank one user; search() has O(sum-of-ranks) lookup fan-out
#922
/lab loads every issue with full markdown bodies on every request (incl. detail pages) + ~12 serial DB waves — the 3.4s avg / 30s tail
#927
Activity projector runs on both telemetry replicas — same-day chunks can double-grant (grant_id collides but granted_at differs, ReplacingMergeTree never dedups)
#872
Activity heatmap clips the current UTC day — uses local browser time for "today" but snapshots are UTC-keyed
#881
Council: set the scoring balance — command tiers, farm-decay parameters, cross-category ratio
#880
Scoring coverage gaps: instrument drop-off, score ripples/mentions, reward invite-converts
#854
Epic #847 · Unit 2: score_grants append-only ledger write-model in Mongo (shadow, no read flip)
#862
feat(clickhouse): tracked archive→CH backfill tooling (backfill.sql)
#861
feat(clickhouse): idempotent DDL migration path for running prod (#859 deliverable 2)
#860
chore(clickhouse): retire S3-backed v1 + s3 objects after #859 cutover
#859
Decouple prod ClickHouse from S3 (drop storage_policy=s3_main) + add a DDL migration path
#853
Epic #847 · Unit 1: Land the ClickHouse projection foundation (schema + init SQL + compose service)
#850
Extension publish score is non-monotonic: yanking versions lowers a user's score
#849
Live Swamp Club event console on /feed — scrolling stream of all non-sensitive events
#820
Telemetry watcher has no replica coordination: N replicas double-process the same batch (non-atomic find→updateMany claim)
#819
Telemetry drain still capped ~80-100/s in prod: per-username full-history re-aggregate is O(users) sequential per batch (deferred #817 fix #4)
#817
Telemetry ingest is consumer-bound: counter & stats dedup via O(N) sequential insertOne, throughput stuck ~20 events/s regardless of BATCH_SIZE
#804
Batch step 2 of enrichAuthorPlans (per-collective subscription reads)
#802
Add SWAMP CLUB wordmark logo next to sc-mark.png in TRADEMARKS.md
#719
Docs: document trigger.inputs for scheduled/webhook workflows in the manual
#729
serve --webhook usage string makes <header> look optional for generic scheme
#789
Leaderboard window baseline: 90-day cutoff zeroes returning-dormant users (latent, 0 impact today)
#737
Yank semantics inconsistent: all-versions-yanked acts as a free hidden/private extension; extension-level yank hard-blocks re-push
#728
serve: webhook scheme not surfaced in startup event, health endpoint, or log line
#726
Slack webhook pre-body gate only checks signature header, not timestamp
#725
Dead code: verifySignature in webhook.ts superseded by verifier abstraction
#723
Data-driven webhook signature verifiers (avoid a code change + release per provider)
#709
Replace third-party trademark symbol with Swamp Club (SC) mark in TRADEMARKS.md
#650
datastore setup migration relocates and deletes repo-root .swamp/secrets, breaking all local_encryption vault.get
#649
Registry content-type search filter can match versions absent from the displayed extension
#648
Docs: document reports.require failure semantics in the manual (unresolvable required report fails the run)
#645
Resource-leak test failures on main: extension_rubric_scorer_test and worker_gateway_test
#635
Tier-up announcements never fire for direct score contributions (badge awards, feed credits)
#507
Feed-post scoring is a direct domain write, not a consumer of feed_post_approved telemetry
#492
reindexByUsername re-strands pre-association history and wipes sign_in_dates
#573
extension search returns null repository fields that extension info populates
#509
Docs: TLS behind inspecting proxies / private CAs (system trust store, DENO_CERT, SSL_CERT_FILE)
#501
username_metrics projection backfill does not trigger re-scoring (stale UserScore for dormant users)
#491
Telemetry never retroactively credits a device's pre-association history
#448
Telemetry admin reindex endpoint is gated on a defunct @systeminit.com email domain — permanently 403
#445
extension update/pull deadlocks when the repo's datastore is the extension being updated
#447
CLI telemetry forwards non-personally-resolvable identity for collective auth; distinct_id is per-machine, not per-repo
#446
Telemetry ingest only resolves personal API keys — collective-token events are unattributed, identity_map under-claims
#430
--json output is polluted by non-JSON content, breaking machine parsing
#424
swamp serve: extension bundle failure at startup is silently pinned, breaking scheduled workflows with permanent 'Unknown model type'
#413
Harness detection invents env vars for kiro/opencode/codex
#393
Extension METHODS table truncates Method column; short names like apply/check wrap mid-word on /extensions/@swamp/ssh
#392
swamp extension rm leaves empty <kind>-bundles/<hash>/ dirs behind
#383
`swamp extension rm` leaves empty scaffold dirs behind
#384
identity_map row not updated when user renames
#362
Unified login input that detects email vs username by presence of '@'
#361
Introduce `swampd`: long-running local daemon for shared cache, secrets, and extensions
#338
Step key parsing in execution_service uses naive split(":") and silently truncates colon-containing step names
#337
Workflow-scope report artifacts unreachable via `swamp data get --workflow`
#312
telemetry: emit child entries for follow-up action method invocations
#301
Per-method telemetry events for workflow runs
#293
Award leaderboard points for referrals and collective invites
#292
Add agent harness detection and AiTool to telemetry
#280
Missing unique indexes on user.email and user.username allow duplicate users
#282
Local extension edits don't reliably trigger rebundle
#278
discord-bot double-sends sign_up notifications
#277
Discord bot sends duplicate signup notifications
#232
Extend DatastoreSyncService.markDirty() with optional relPath argument
#215
Adversarial UAT test: missing cached bundle with intact catalog should self-recover
#214
Port importBundleByPath ENOENT fallback to datastore/driver/vault/report loaders
#192
swamp-club extension card no longer exposes @ns/slug as contiguous text
#170
Docs: repository-configuration.md missing defaultDriver / defaultDriverConfig
#178
Better Auth rejects requests on hostnames not in hardcoded trustedOrigins (signup/signin broken on non-canonical hosts)
#96
Persist lab filter selection in localStorage
#169
Server-side parse query params on /lab/all so refresh preserves multi-filter URLs
#165
cleanup for repoDriver
#159
Add repo-level `defaultDriver` to `.swamp.yaml`
#143
First-class jsr: specifier support in extension bundler
#97
Inline editing: click-to-edit fields instead of pencil icons
#142
Cross-extension code sharing via manifest exports field
#122
Footer floats when page content is shorter than viewport
#110
Remove traffic lights in column 2 of /lab
#101
Flow modal: text rendering issues
#106
Bog flow: text rendering and layout issues
#109
Multi-select combo filtering on /lab
#112
Filter lab issues by author (opened by user)
#113
Usernames aren't linked to their profile pages
#114
Collapsible left rail and repositionable right rail in Lab
#115
'Assigned to me' overlaps 'Privacy policy' on short viewports
#84
Consolidate MethodReportContext construction — manual and workflow report paths build contexts divergently
#108
data gc skips version-count GC when no lifetime-expired data exists
#98
Description 'Show more' button appears even when text fits
#99
Normalize text sizing across issue list and detail views
#107
Content filter should identify the flagged word or phrase
#90
Audit: modelRegistry.get() without ensureTypeLoaded() in YAML repository save() paths
#91
Vault CEL expressions replaced with VaultSecretBag sentinels after model type upgrade
#86
issue-lifecycle models should support --assignee for swamp.club issues
#89
Cross-model expression validator fails on lazy-loaded types — modelRegistry.get() bypasses ensureTypeLoaded
#35
Consolidate method execution paths — workflow steps and manual runs build MethodContext divergently
#33