## Issue Triage — 2026-02-10

### 1) **Crash on fresh Milaidy install: `skill.description.toLowerCase is not a function`**
- **Issue Title & ID:** Agent skills provider crash in `agent_skill_instructions` (`skill.description.toLowerCase is not a function`) — **DISCORD-2026-02-09-AGENTSKILLS**
- **Current Status:** **Untracked (Discord-confirmed, known bug per Odilitime). Needs GitHub issue + fix PR.**
- **Impact Assessment:**
  - **User Impact:** **High** (hits new installs; reported on fresh VPS setup)
  - **Functional Impact:** **Yes** (hard crash blocks agent startup / skills provider)
  - **Brand Impact:** **High** (first-run crash severely harms perceived stability)
- **Technical Classification:**
  - **Issue Category:** Bug
  - **Component Affected:** Plugin System / Skills Provider (`@elizaos/plugin-agent-skills`, Milaidy integration path)
  - **Complexity:** **Simple fix → Moderate effort** (type validation + data normalization + regression test)
- **Resource Requirements:**
  - **Required Expertise:** TypeScript, plugin provider pipeline, schema validation (zod/typings), runtime/provider formatting
  - **Dependencies:** None, but should align with any ongoing plugin-bootstrap/provider robustness work
  - **Estimated Effort (1–5):** **2**
- **Recommended Priority:** **P0**
- **Specific Actionable Next Steps:**
  1. Create GitHub issue in the correct repo (likely plugin-agent-skills or milaidy) with stack trace + minimal reproduction.
  2. Patch provider to coerce/validate `skill.description` to string (or guard missing/non-string) before `.toLowerCase()`.
  3. Add unit/regression test for skill objects with `description: null | object | number`.
  4. Cut a patch release and update Milaidy installer/lockfile to consume it.
- **Potential Assignees:**
  - **Odilitime** (confirmed known bug; strong bootstrap/provider work)
  - **s** (Milaidy/openclaw integration context)
  - **anchapin** (recent defensive null-check fixes)

---

### 2) **Webapp: URL messages trigger duplicate LLM calls (processed as text + attachment)**
- **Issue Title & ID:** `[Bug] URL in message triggers duplicate LLM calls - processed as both text and attachment (webapp)` — **elizaos/eliza #6486**
- **Current Status:** **OPEN**
- **Impact Assessment:**
  - **User Impact:** **High** (URLs are common; affects most webapp users)
  - **Functional Impact:** **Partial** (responses still appear, but duplicated and expensive)
  - **Brand Impact:** **High** (visible duplicate output + perceived “agent glitchiness” + cost blowups)
- **Technical Classification:**
  - **Issue Category:** Bug / Performance (cost)
  - **Component Affected:** Webapp message ingestion + server message processing / attachment handling + SSE streaming
  - **Complexity:** **Moderate effort** (dedup logic, canonical message representation, stream semantics)
- **Resource Requirements:**
  - **Required Expertise:** Server message pipeline, attachment/link preview handling, SSE aggregation, client message model
  - **Dependencies:** Clarify intended URL-preview behavior (should it be attachment OR text, and when)
  - **Estimated Effort (1–5):** **3**
- **Recommended Priority:** **P1**
- **Specific Actionable Next Steps:**
  1. Instrument logging to confirm where the second call is triggered (client vs server vs preview fetcher).
  2. Add a deterministic rule: URL content is handled in **one path** (either inline text or attachment metadata), not both.
  3. Ensure SSE stream emits a single response envelope per user message; add guard before `done`.
  4. Add integration test: message containing URL produces exactly one model invocation and one streamed response.
- **Potential Assignees:**
  - **lalalune** (core runtime/message flow changes in-flight; can align fix with “next” changes)
  - **Stan** (system performance focus)
  - **anchapin** (stability-oriented fixes; good fit if localized)

---

### 3) **Database performance bottleneck: PostgreSQL logs table “hit excessively” slows responses**
- **Issue Title & ID:** Postgres logs table hot path causing slow agent responses — **DISCORD-2026-02-08-DBLOGS**
- **Current Status:** **Known problem; “major optimization plan” acknowledged by Stan. Not linked to a specific issue in provided data.**
- **Impact Assessment:**
  - **User Impact:** **Critical** (system-wide latency in production-like deployments)
  - **Functional Impact:** **Partial → Yes** (degraded responsiveness becomes effectively unusable at load)
  - **Brand Impact:** **High** (slow agents read as “bad model/agent,” not “DB issue”)
- **Technical Classification:**
  - **Issue Category:** Performance
  - **Component Affected:** Core Framework / Server / Persistence layer (PostgreSQL logging + query patterns)
  - **Complexity:** **Complex solution** (schema/indexing, write patterns, retention, async logging, sampling)
- **Resource Requirements:**
  - **Required Expertise:** Postgres performance tuning (indexes, partitions), Node/TS server profiling, observability
  - **Dependencies:** Requires clarity on logging requirements (audit vs debug), retention policy, and cloud deployment constraints
  - **Estimated Effort (1–5):** **5**
- **Recommended Priority:** **P0** (if impacting shared environments / ElizaCloud) otherwise **P1**
- **Specific Actionable Next Steps:**
  1. Create/identify a canonical GitHub issue tracking the “logs-table optimization plan” with benchmarks and target SLOs.
  2. Add DB metrics dashboard: QPS to logs table, slow query log, row growth rate, index hit ratio.
  3. Short-term mitigations: log sampling, async/batched inserts, reduced query frequency, prune old rows.
  4. Medium-term: partition logs table by time, introduce write-optimized table + rollups, or move verbose logs to object storage.
- **Potential Assignees:**
  - **Stan** (explicit owner per Discord)
  - **sayonara** (identified root symptom in discussion)
  - **lalalune** (architectural refactors may integrate a better logging strategy)

---

### 4) **Missing `MAX_EMBEDDING_TOKENS` constant in latest plugin versions (breaks compatibility)**
- **Issue Title & ID:** Plugin compatibility regression: `MAX_EMBEDDING_TOKENS` missing in latest plugin versions — **DISCORD-2026-02-08-MAXEMBED**
- **Current Status:** **Untracked; workaround is rollback or PRs across plugin repos.**
- **Impact Assessment:**
  - **User Impact:** **High** (breaks installs/upgrades; fragments ecosystem versions)
  - **Functional Impact:** **Yes** (embedding/token logic fails or prevents build/runtime)
  - **Brand Impact:** **Medium–High** (perceived ecosystem brittleness)
- **Technical Classification:**
  - **Issue Category:** Bug / DX
  - **Component Affected:** Plugin System / Model Integration constants shared across plugins
  - **Complexity:** **Moderate effort** (multi-repo coordination + release sequencing)
- **Resource Requirements:**
  - **Required Expertise:** TypeScript monorepo/versioning, plugin publishing, API compatibility policy
  - **Dependencies:** Decide canonical source of truth for constants (core vs shared package); define minimum versions
  - **Estimated Effort (1–5):** **3**
- **Recommended Priority:** **P1**
- **Specific Actionable Next Steps:**
  1. Create an issue documenting exact import sites + failing versions.
  2. Decide policy: move constant to `@elizaos/core` (or a `@elizaos/constants`) and deprecate per-plugin definitions.
  3. Submit coordinated PR(s) to affected plugins, then publish a synchronized patch release.
  4. Add CI check to prevent deleting/renaming exported constants without a deprecation window.
- **Potential Assignees:**
  - **s** (acknowledged integration issues; has local fixes)
  - **Wes** (already thinking about PR strategy; can drive multi-repo PRs)
  - **lalalune** (cross-repo architecture/versions)

---

### 5) **Scam/support ticket spam: need autoban / anti-phishing response**
- **Issue Title & ID:** Implement autoban/anti-scam measures for Discord scam support tickets — **DISCORD-2026-02-09-AUTOBAN**
- **Current Status:** **Untracked; acknowledged need by community/devs; active scam incidents confirmed.**
- **Impact Assessment:**
  - **User Impact:** **High** (users being targeted; “support desk discord” scam confirmed)
  - **Functional Impact:** **No** (doesn’t break runtime, but harms user safety)
  - **Brand Impact:** **High** (security perception + community trust)
- **Technical Classification:**
  - **Issue Category:** Security / UX (community safety)
  - **Component Affected:** Discord ops/mod tooling (bots, automod rules, verification flows)
  - **Complexity:** **Moderate effort** (rules + bot config + escalation playbook)
- **Resource Requirements:**
  - **Required Expertise:** Discord moderation tooling, bot development/config, security comms
  - **Dependencies:** Define official support channels + pinned guidance + reporting flow
  - **Estimated Effort (1–5):** **2–3**
- **Recommended Priority:** **P1**
- **Specific Actionable Next Steps:**
  1. Publish “Official Support Channels” pinned post; explicitly warn against DMs/support-desk clones.
  2. Enable/expand automod: block common scam phrases, suspicious invite links, repeated ticket spam patterns.
  3. Add a lightweight reporting command/workflow and rapid ban queue.
  4. Post-incident template for moderators to respond consistently (minimize rumor churn).
- **Potential Assignees:**
  - **Odilitime** (already engaging on scams)
  - **davidhq / paolin** (active community clarifications; can own official comms + pin)
  - **Discord mod team** (operational ownership)

---

### 6) **Character configuration limitations: agents default to “eliza”; character editor missing for non-onboarding**
- **Issue Title & ID:** Character loading defaults to “eliza”; character creation limited to onboarding; need editor — **DISCORD-2026-02-08-CHARCONFIG**
- **Current Status:** **In progress** (Bill Ding said character editor being wired in)
- **Impact Assessment:**
  - **User Impact:** **High** (core agent customization is a primary workflow)
  - **Functional Impact:** **Partial** (agent runs but wrong persona; undermines use cases)
  - **Brand Impact:** **Medium–High** (users perceive “config doesn’t work”)
- **Technical Classification:**
  - **Issue Category:** UX / Bug
  - **Component Affected:** Core Framework + CLI/GUI onboarding + character file loading path
  - **Complexity:** **Moderate effort**
- **Resource Requirements:**
  - **Required Expertise:** Runtime config loading, UI/editor integration, schema validation
  - **Dependencies:** Clarify canonical character file location(s) and precedence rules
  - **Estimated Effort (1–5):** **3**
- **Recommended Priority:** **P2** (becomes **P1** if widespread “wrong persona” persists post-editor)
- **Specific Actionable Next Steps:**
  1. Define and document precedence: onboarding profile vs character file vs runtime overrides.
  2. Add validation + explicit warnings when a character file is ignored/fails to load.
  3. Ship character editor with import/export and test coverage for “non-onboarding update” flows.
- **Potential Assignees:**
  - **Bill Ding** (already implementing editor)
  - **lalalune** (runtime/config precedence work in “next” may intersect)

---

### 7) **Model selection mismatch: configured model ignored; Claude Haiku 3.5 used unexpectedly**
- **Issue Title & ID:** Model selection bug: `claude-haiku-3.5` used despite config — **DISCORD-2026-02-08-MODELSELECT**
- **Current Status:** **Untracked**
- **Impact Assessment:**
  - **User Impact:** **Medium–High** (affects quality/cost tuning; common configuration step)
  - **Functional Impact:** **Partial** (agent responds, but not with intended model)
  - **Brand Impact:** **Medium** (trust in configuration)
- **Technical Classification:**
  - **Issue Category:** Bug
  - **Component Affected:** Model Integration / Runtime settings resolution
  - **Complexity:** **Moderate effort**
- **Resource Requirements:**
  - **Required Expertise:** Settings resolution, runtime model routing, config schema
  - **Dependencies:** May intersect with per-request/per-entity settings changes (RequestContext)
  - **Estimated Effort (1–5):** **3**
- **Recommended Priority:** **P2**
- **Specific Actionable Next Steps:**
  1. Reproduce with minimal config; capture resolved model logs at runtime.
  2. Identify precedence bug (env vs config vs defaults vs request context).
  3. Add test ensuring configured model is selected deterministically.
- **Potential Assignees:**
  - **lalalune** (runtime/settings work)
  - **anchapin** (settings robustness)
  - **Stan** (if tied to performance/cost controls)

---

### 8) **Twitter integration: quote repost not native (posts text + link only)**
- **Issue Title & ID:** Twitter plugin missing native quote repost support — **DISCORD-2026-02-08-TWQUOTE**
- **Current Status:** **Untracked; “make an issue or PR” response**
- **Impact Assessment:**
  - **User Impact:** **Medium** (social automation users)
  - **Functional Impact:** **Partial** (posting works, but feature gap)
  - **Brand Impact:** **Low–Medium**
- **Technical Classification:**
  - **Issue Category:** Bug / Feature gap
  - **Component Affected:** Plugin System (Twitter/X connector)
  - **Complexity:** **Moderate effort**
- **Resource Requirements:**
  - **Required Expertise:** Twitter API constraints (v2), media/quote tweet endpoints, plugin action design
  - **Dependencies:** API access level; ensure compliance with X policies
  - **Estimated Effort (1–5):** **3**
- **Recommended Priority:** **P3**
- **Specific Actionable Next Steps:**
  1. Create GitHub issue with expected behavior + API references.
  2. Implement a dedicated action for quote tweets using the correct endpoint/fields.
  3. Add an integration test stub with mocked API.
- **Potential Assignees:**
  - **Bill Ding** (plugin-related guidance)
  - **Community contributor** (good first/second issue once spec’d)

---

### 9) **Token migration deadline: users who missed migration lack guidance**
- **Issue Title & ID:** Documentation/Support gap: missed ai16z → ELIZA migration deadline; user asks if tokens are lost — **DISCORD-2026-02-09-MIGRATIONDOC**
- **Current Status:** **Unanswered in Discord; no linked canonical doc in provided data**
- **Impact Assessment:**
  - **User Impact:** **High** (financial impact; high emotional intensity)
  - **Functional Impact:** **No** (framework unaffected)
  - **Brand Impact:** **High** (trust/credibility risk)
- **Technical Classification:**
  - **Issue Category:** Documentation / Support
  - **Component Affected:** Project comms + docs site
  - **Complexity:** **Simple fix** (publish clear policy + support path)
- **Resource Requirements:**
  - **Required Expertise:** Project ops/comms; knowledge of migration contract/process
  - **Dependencies:** Confirm final policy (no extensions vs manual appeals vs finality)
  - **Estimated Effort (1–5):** **1–2**
- **Recommended Priority:** **P1**
- **Specific Actionable Next Steps:**
  1. Publish a pinned, signed “Migration Status & FAQ” with dates, finality, and official links only.
  2. Define what (if any) remediation exists and how to request it (with scam-resistant verification).
  3. Add Discord automod reply for “migration missed” keywords pointing to the canonical doc.
- **Potential Assignees:**
  - **davidhq / paolin** (already correcting misinformation)
  - **jin** (can distribute via weekly roundup channels)
  - **Core ops/treasury signer** (whoever owns the migration policy)

---

### 10) **Exchange delisting misinformation: AI16Z vs ELIZAOS confusion**
- **Issue Title & ID:** Clarify official position: Korean exchange delisting affected AI16Z (pre-rebrand), not ELIZAOS — **DISCORD-2026-02-09-DELISTDOC**
- **Current Status:** **Partially clarified in chat; needs canonical statement**
- **Impact Assessment:**
  - **User Impact:** **High** (panic selling/rumors)
  - **Functional Impact:** **No**
  - **Brand Impact:** **High** (credibility and community trust)
- **Technical Classification:**
  - **Issue Category:** Documentation / UX (communications)
  - **Component Affected:** Public comms (Discord, docs, announcements)
  - **Complexity:** **Simple fix**
- **Resource Requirements:**
  - **Required Expertise:** Comms + verifying exchange notices
  - **Dependencies:** Screenshots/links to exchange announcements; consistent terminology (AI16Z vs ELIZAOS)
  - **Estimated Effort (1–5):** **1**
- **Recommended Priority:** **P2**
- **Specific Actionable Next Steps:**
  1. Post an announcement with sources (exchange link/screenshots), timestamped, and pinned.
  2. Add a short entry to docs/FAQ: “Token history and tickers (AI16Z → ELIZAOS).”
  3. Create a “rumor response” runbook: who verifies, where to post, how to pin/lock threads.
- **Potential Assignees:**
  - **paolin** (already clarified)
  - **davidhq** (requested proof; verification mindset)
  - **Discord mod/announcements owner**

---

## Immediate Focus Summary (Top Priority Queue: next 5–10 to address)
1. **P0:** Agent skills provider crash on fresh installs (**DISCORD-2026-02-09-AGENTSKILLS**)
2. **P0/P1:** Postgres logs table performance bottleneck slowing responses (**DISCORD-2026-02-08-DBLOGS**)
3. **P1:** URL messages cause duplicate LLM calls in webapp (**#6486**)
4. **P1:** Missing `MAX_EMBEDDING_TOKENS` constant causing plugin incompatibility (**DISCORD-2026-02-08-MAXEMBED**)
5. **P1:** Discord scam/autoban + official support channel hardening (**DISCORD-2026-02-09-AUTOBAN**)
6. **P1:** Token migration deadline guidance and scam-resistant support path (**DISCORD-2026-02-09-MIGRATIONDOC**)
7. **P2:** Character config/editor + “defaults to eliza” confusion (**DISCORD-2026-02-08-CHARCONFIG**)
8. **P2:** Model selection mismatch (configured model ignored) (**DISCORD-2026-02-08-MODELSELECT**)
9. **P2:** Canonical clarification on delisting rumors (**DISCORD-2026-02-09-DELISTDOC**)
10. **P3:** Twitter quote repost functionality gap (**DISCORD-2026-02-08-TWQUOTE**)

---

## Patterns / Themes Indicating Deeper Issues
- **Input/schema brittleness in providers/plugins:** Multiple crash classes are type/shape issues (`toLowerCase` on non-string, null `Object.entries`), suggesting inconsistent schemas across plugins and insufficient runtime validation.
- **Ecosystem versioning/compatibility drift:** Missing shared constants and “rollback to older versions” advice indicates lack of enforced compatibility contracts across plugin releases.
- **Hot-path observability gaps:** DB performance pain is known, but the discussion implies it was discovered via user-visible slowness rather than proactive metrics/alerts.
- **Configuration precedence ambiguity:** Character/model selection issues point to unclear or inconsistent rules for config resolution (onboarding vs file vs env vs defaults vs per-request context).
- **Security/comms as product-critical:** Scam incidents and token/migration confusion show that community safety and clear canonical comms are now operational requirements, not “nice to have.”

---

## Process Improvement Recommendations
1. **“Discord → GitHub in 24h” rule for P0/P1:** Any confirmed crash/perf regression raised in Discord must become a GitHub issue with reproduction steps, owner, and target release within one day.
2. **Introduce strict provider input contracts:**
   - Define schemas for provider inputs/outputs and validate at boundaries (fail gracefully with warnings, not crashes).
   - Add a “provider conformance” test suite in CI.
3. **Cross-plugin compatibility policy:**
   - Centralize shared constants/types into a single package.
   - Add CI checks for breaking export removals and require deprecation windows.
4. **Performance SLO + instrumentation baseline:**
   - Track DB QPS, slow queries, and agent response latency by route/provider.
   - Add alerting for log-table write/read amplification.
5. **Canonical announcements + anti-scam hardening:**
   - Maintain a pinned “Official Links / Support” message and automate replies to common scam keywords.
   - Publish a short “rumor response” runbook with verification steps and a single source of truth channel.