#2012
feat(nurture): /admin/nurture — who would get what, and why
#2011
feat(nurture): the nurture_send ledger and the dry-run projector, with the cold-start seal
#2010
feat(nurture): batch cohort reads — account-grain identification that carries its evidence
#2009
feat(nurture): the flow catalog and the qualification contract (pure domain)
#1819
IdP group memberships go stale indefinitely — user.idpGroups is only written by the SSO login hook
#1884
Genesis "New Blood" (recruit_first) only counts collective invites — a platform invite can never complete it
#1805
@swamp/s3-datastore disables IMDS on plain EC2, so an attached instance profile cannot resolve
#1804
AWS credential handling is duplicated across five implementations — the #803 preflight and the #226/#228 SSO hints reached only one of them
#1572
Epic: /leaderboard and /u/{username} do not survive 10B events — measured audit + phased plan
#1255
Reconcile collective-token CLI activity to members (attribute → bonus → stamp → even-split)
#1665
Sync every signup to Attio, and backfill the existing population (#809 follow-up)
#1497
Push down the two cheap leaderboard scans: ghost-gate dictionary and eventCounts owner filter
#967
$identify events are never consumed — anonymous web history never binds to the account
#1658
One standing read: every scalar score consumer reads board_totals, not the ledger
#1657
Profile Edit trigger is a fire-and-forget island: no aria-expanded, and a silent no-op if the editor island does not hydrate
#1654
Profile XP bar jumps ~25px on fill, and pays the full cumulative walk for two numbers board_totals already holds
#929
Incremental activity projector + swamp.events username bloom index (spun off #925, stages 5+7)
#1254
Telemetry stats consumer: insert_id dedup commits before the write it guards — any upsert failure is silently swallowed on retry
#1598
score-rollup projector runs N× per cadence — the run gate is per-replica memory, not shared state
#1579
Leaderboard board windows re-anchor on wall-clock while the rest of the view is frozen at asOf
#1651
Ripple redaction rewrites HTTP status-code runs as phone numbers, silently corrupting evidence
#1503
Profile score section blocks the render on a ClickHouse read
#1204
Collective invite emailed-link return path is dropped: /accept-invite sends ?returnUrl= but /login reads ?redirect=
#1504
Ghost profile bypasses the score-read seam and 500s on a slow ledger
#1589
A ledger read failure still renders as 'no activity': loadProfileScore swallows to an empty standing behind HTTP 200
#1620
Model lookup misreports EMFILE (too many open files) as a broken definition file and dumps a raw stacktrace
#1605
serve telemetry identity warnings are diagnostic but not actionable — say how to fix them
#1588
swamp quest: drop the heartbeat field the server no longer sends
#1604
Daemon telemetry flush: stop() can skip its final flush when a timer drain is already in flight
#1576
Profile candidateIds prune costs a full ledger scan to build itself — 42.88M rows for one keyed read
#1575
Leaderboard phase 3: owner-grain board_totals so a cache miss is survivable at 10B
#1591
swamp serve is telemetry-dark: scheduled workflow runs never reach /ingest, and the daemon never flushes
#1581
Catalog backfill reconciles against the local cache, not the datastore
#1574
Leaderboard phase 2: take score_grants off the board read path — read today from score_daily
#1586
Profile day drill-down returns 0 entries at the 5s ClickHouse ceiling for every operative
#1582
reconcile_from_disk_bench.ts fails deno check (stale DenoRuntime stub)
#1573
Leaderboard phase 1: cache the board read and bust it on tier crossings (no schema change)
#1580
Catalog backfill deletes rows for any model whose data names are numeric
#1544
swamp auth whoami should report paid tier and trial status
#1496
Split the score-read circuit breaker so leaderboard pressure can't blank profile scores
#1475
oauth_sign_in telemetry records provider as the literal ":id" for every event
#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
#1494
score-rollup-projector: O(all-time ledger) closure + per-pod fan-out saturates prod ClickHouse CPU
#1486
swamp auth server-login ignores SWAMP_SERVE_URL
#1478
serve oauth: an unrecognized device-token error kills the whole serve process instead of the bootstrap
#1482
CLI reports 'HTTP/2 not supported by this client' when the server actually returned 401 — masks auth failures as a transport error
#1477
serve oauth: startDeviceGrant discards the OAuth error field, making device-code failures undiagnosable
#1476
serve oauth bootstrap: device flow rate-limited to a 45-second window by validateClient counter, shared globally across tenants
#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
#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
#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)
#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
#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)
#973
issue-lifecycle: plan lifecycle entry silently dropped when summary exceeds 1000 chars
#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
#872
Activity heatmap clips the current UTC day — uses local browser time for "today" but snapshots are UTC-keyed
#854
Epic #847 · Unit 2: score_grants append-only ledger write-model in Mongo (shadow, no read flip)
#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)
#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
#719
Docs: document trigger.inputs for scheduled/webhook workflows in the manual
#729
serve --webhook usage string makes <header> look optional for generic scheme
#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
#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)
#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
#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
#362
Unified login input that detects email vs username by presence of '@'
#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`
#301
Per-method telemetry events for workflow runs
#292
Add agent harness detection and AiTool to telemetry
#280
Missing unique indexes on user.email and user.username allow duplicate users
#278
discord-bot double-sends sign_up notifications
#232
Extend DatastoreSyncService.markDirty() with optional relPath argument
#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
#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
#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