fix(rlm): point install guidance at official rlm package, not aragora[rlm] extra#8593
Conversation
…[rlm] extra The user-facing log/error messages in aragora/rlm/factory.py and related RLM modules instructed `pip install aragora[rlm]`, but rlm is not a pyproject [project.optional-dependencies] extra; the real package is the official rlm PyPI distribution (the base install ships only the compression fallback gated by HAS_OFFICIAL_RLM). Update all install-guidance strings to `pip install rlm` and correct the RLM install prose in docs/status/STATUS.md (was `pip install aragora`). String-only; no factory logic or control-flow change. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
The required CI changed-file typecheck gate (mypy --follow-imports=skip, no baseline) surfaces 5 pre-existing union-attr/no-redef errors in cognitive_limiter_rlm.py and knowledge/mound/api/rlm.py once those files are touched by the install-guidance fix. Resolve them behavior-preservingly: collapse the redundant `Any | None` annotation on _aragora_rlm to `Any`, annotate the `source` locals as `Any`, and mark the conditional bridge import `# type: ignore[no-redef]` (matching this file's existing conditional-import convention). Annotations/comments only; no runtime change. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Aragora Code ReviewAdvisory-only review. Findings are surfaced for follow-up and do not fail this workflow. Revised Review Findings (Round 2 – Skeptical Review)Based on the critiques received, I have re‑evaluated every change in the diff through a skeptical lens, focusing on assumptions, edge cases, and the concrete evidence in the codebase. SecurityNo issues found. The diff touches only documentation strings, type annotations, and a minor local‑variable refactor. No injection, authentication, secret handling, or deserialization patterns are introduced. PerformanceNo issues found. The local variable caching ( Code QualityIssue 1: Globally incorrect installation instructions – medium severity (upgraded from LOW)Location: Every docstring, log message, and comment that previously read
Problem: The PR asserts that the official RLM library is distributed as a standalone
Impact: Users attempting to install RLM support will encounter a Suggestion:
Issue 2: Inconsistent error‑message formatting – low severityLocation: Problem: Some log and error messages in the codebase are written as multi‑line strings with line breaks, while others are collapsed into a single line. This inconsistency makes it harder to maintain and to grep for all occurrences when the installation instructions need to be updated again. Suggestion: Once the correct installation method is determined (see Issue 1), standardise the format across all RLM‑related files. Either use a consistently short message or a consistently formatted multi‑line message, and apply that to every log/warning/error. What I Changed and Why (Response to Critiques)
Final RecommendationDo not merge this PR until the packaging model is verified. If the intent is to promote a separate 1 finding(s) across the diff [CRITICAL] FindingFinding Generated by Aragora multi-agent code review |
…e convention Refine the changed-file typecheck-gate fixes per model review feedback: keep `_aragora_rlm` annotated `Any | None` (no widening, consistent with the sibling `_debate_adapter`), narrow it for the `.compress_and_query` call via a local bind after the None guard (behavior-identical to the prior `has_real_rlm` check, since that property is exactly `_aragora_rlm is not None`), and move the conditional-import `# type: ignore[no-redef]` onto the except-branch fallback assignments to match the existing knowledge/mound/api/rlm.py pattern. No runtime change. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Claude independent model reviewReviewer: claude (anthropic) — independent adversarial model review via the Aragora Claude reviewer, grounded on the exact PR head. Verdict: PASS
dogfood: yes |
Source
Tier-2 source-correctness fix from the docs-extras sweep (PR #8548 handoff
discoveredIssues[1]), plus the misc-1 scrutinynonBlockingIssuesdocs item.Problem
aragora/rlm/factory.py(and several sibling RLM modules) emitted user-facing log/error messages instructingpip install aragora[rlm]. Butrlmis not apyproject[project.optional-dependencies]extra. The authoritative extra set is:all, blockchain, connectors, dev, enterprise, experimental, gateway, test. The base install ships only the compression fallback (gated byHAS_OFFICIAL_RLM); real RLM comes from the officialrlmPyPI distribution. The guidance therefore pointed users at a nonexistent extra.docs/status/STATUS.mdhad the mirror inconsistency: it claims real RLM support but showedpip install aragora(which ships only the fallback).Change
Primary change is string-only correctness. All install-guidance now instructs
pip install rlm:aragora/rlm/factory.py— 4 messages (collapsed the redundantaragora[rlm] or pip install rlm)aragora/rlm/__init__.py— docstring install block simplified to the single official installaragora/rlm/adapter.py,aragora/knowledge/mound/api/rlm.py,aragora/debate/cognitive_limiter_rlm.py,aragora/memory/cross_debate_rlm.py— docstring/log guidancedocs/status/STATUS.md— RLM install prosepip install aragora→pip install rlmtests/{rlm,debate}/test_cognitive_limiter_rlm.py— docstring guidance kept consistentNo factory logic or control-flow change.
docs/status/STATUS.mdis not async-docs.jssource (verified:node scripts/sync-docs.jsproduces zerodocs-site/drift), so no mirror regen;docs/archive/**untouched.Required-gate follow-on (commit 2)
The required CI
typecheckcheck is an absolute changed-file gate (mypy --ignore-missing-imports --follow-imports=skip, no baseline) that fails on ANY error in touched files. Touchingcognitive_limiter_rlm.pyandknowledge/mound/api/rlm.pysurfaces 5 pre-existingunion-attr/no-redeferrors (verified present onorigin/main). Resolved behavior-preservingly (annotations/comment only, no runtime change):_aragora_rlm: Any | None→Any(collapse redundant union; the value is factory-producedAny)source: Any = getattr(...)on the two knowledge-item loops# type: ignore[no-redef]on the conditionalaragora.rlm.bridgeimport (matches the file's existing conditional-import convention, e.g.knowledge/mound/api/rlm.pylines 45-48)Validation
Risk
Minimal. Install-guidance/docstring edits plus behavior-preserving type annotations to satisfy the absolute changed-file typecheck gate. No behavioral change to the RLM factory/fallback flow. No test asserts on the old string.