Repository navigation
v2.6.0 — Technical context across AI research
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 migration0018_brain_technical_contextleaves 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.