Skip to content

v2.6.0 — Technical context across AI research

Choose a tag to compare

@laanito laanito released this 05 Nov 14:50
· 20 commits to main since this release
fccb6b3

v2.6.0 — Technical context across AI research

Published on 2026-11-05 from the approved merge of release PR #256 (fccb6b3). All three release-preparation CI jobs passed: build-and-test, clean-install and postgres-contract. The changelog heading records preparation on 2026-11-04; publication is 2026-11-05.

The same three descriptive observations now support AI Investment Briefing, Interrogate, Second Brain and selected holdings in Portfolio AI Risk Assessment. Exact values, dates, formulas, source identities and missing coverage remain inspectable. These observations do not establish historical investor knowledge, a long-term buying case or aggregate portfolio risk.

Upgrade

Includes Alembic 0018_brain_technical_context: one nullable JSON column for explicitly saved Brain technical snapshots. Docker applies migrations before startup. Existing local databases must run PYTHONPATH=. backend/.venv/bin/python -m alembic -c backend/alembic.ini upgrade head with their configured database before using the new app. Old memos are not backfilled or rewritten; downgrade retains captured research. No new provider, indicator, dependency or embedding change is required.

Verification

Consolidated checks passed 1,667 backend tests (one skipped; 77.29% coverage), all 681 frontend tests, the production build, API/surface/mock guards and all 24 Chrome smoke journeys. Compose configuration and disposable SQLite legacy-memo upgrade/rollback/re-upgrade checks passed. PostgreSQL and fresh-stack contracts passed in CI. The maintainer confirmed the Brain correction and Portfolio integration work as intended; automated fixtures are not an independent model-quality benchmark.

Fixed

  • Reliable manual Brain symbol selection — Add stays aligned with the input
    when suggestion help disappears on blur, preventing a lost click and an
    unintended ask without technical symbols. Browser coverage waits for empty
    suggestions and verifies each selected symbol before submission.
  • Brain technical scope survives missing private matches — explicitly
    selected technical symbols are collected even when private retrieval has no
    matches, the index is empty or query embeddings fail. The answer reports the
    private evidence gap, keeps available technical citations inspectable and
    preserves captured evidence on save. Private citations are required only when
    supplied; invented references still fail. Prompts keep long-term investment
    conclusions beyond the scope of three short-window measures. If private and
    technical evidence are both unavailable, no synthesis is requested.
  • Browser insight length parity — the shared insight reader now accepts the
    server's expanded summary/title/point and total-text safety ceilings, instead
    of rejecting valid longer analysis with a generic request error. Unicode
    counts match Python code points; insight-specific NDJSON framing accommodates
    escaped Unicode without enlarging other model-operation frame limits. A
    backend/frontend contract check prevents the limits drifting apart again.
  • Actionable structured insight repair — validation failures now identify
    the field and safe type/length metadata without logging provider text or
    private evidence. Streaming fallback and the existing single completion retry
    receive the validation correction instead of repeating the same prompt.
    The inherited 220-character bullet limit is now a writing preference rather
    than a rejection rule. Generous safety ceilings allow 2,000-character summaries
    and points, 160-character titles, 16,000 total text characters and 64,000 raw
    JSON characters; oversized streams close before bounded fallback. Structure/
    count checks, selected model, shared deadline and final validation remain;
    malformed object/list tone values degrade rather than crash. Text is never
    silently truncated.

Added

  • Selected holding technical evidence for Portfolio AI Risk Assessment (v2.6)
    — optionally choose up to three held symbols alongside existing risk metrics.
    The server verifies owner/membership before market or model work, aggregates
    recorded lot quantities and cost-currency metadata, and collects a cancellable
    15s batch using the same three observations. Per-holding references inspect
    exact dates, formulas, provenance and supporting closes, including partial
    coverage and model failures. Coverage counts symbols; no value weights or
    aggregate technical risk are computed. Missing risk metrics do not block
    explicitly selected technical evidence. Scope/holdings/metric changes cancel
    and clear old analysis, and late analytics from a prior portfolio are ignored.
    Existing risk APIs add typed optional scope/evidence; supplied risk observations
    are bounded at 32,000 serialized characters and preserved without truncation.
    Deep/default profile, deadlines and bounded repair remain. No new indicator,
    provider, route, persistence, indexing or migration is introduced.
  • Optional technical evidence for Second Brain (v2.6) — choose up to three
    explicit instrument symbols alongside existing private-source filters. One
    bounded batch supplies the same three descriptive observations, alongside
    private research when available. Namespaced metric citations inspect exact dates,
    values, formulas, provenance and supporting closes separately from private
    citations. Current snapshots stay distinct from dated claims and historical
    knowledge; unavailable coverage preserves private evidence. Same-profile
    streaming/completion reference repair stays inside existing deadlines, and
    cancellation joins provider work. Explicit Brain Log saves retain the captured
    evidence; private citation rechecks never refresh it. Reviewed Note promotion
    includes dated capture labels rather than reusing active snapshot references.
    Nullable JSON migration 0018_brain_technical_context leaves old memos intact
    without backfill/default and retains the column on rollback. No new route,
    provider, indicator, retrieval-ranking change or automatic indexing is added.
  • Technical context for instrument research (v2.6) — Investment Briefing and
    Interrogate gather the three standalone observations during explicit
    generation. Answer-local metric references open exact dates, formulas,
    provenance, quality limitations and supporting closes. Missing technical
    history preserves other research inputs; reference checks share the existing
    bounded Deep repair/deadline lifecycle. Cache keys include evidence contract/
    UTC date, and Interrogate retains owner/note scope and distinct effective/
    recorded note dates. Existing research GET/stream results add typed
    technical_context; no new route, indexing or persistence is introduced.
  • Standalone technical snapshot foundation (v2.6) — internal typed
    instrument requests/snapshots select a bounded recent daily window without
    creating a comparison pair. Shared original-source checks and deterministic
    20/21-close calculations preserve provenance, actual dates, stable identities
    and unavailable states. Collection makes one bounded provenance-aware history
    call and propagates cancellation; no AI consumer, new public route, cache or
    persistence is introduced. Existing v2.5 comparison contracts remain intact.