Skip to content

v2.0.0 — Cross-market context

Latest

Choose a tag to compare

@laanito laanito released this 15 Oct 20:25
· 6 commits to main since this release
7e467df

[2.0.0] - 2026-10-15

The first v2 release makes cross-market context available as an explicit,
inspectable research journey. Users select an asset and market proxies, then
see dated shared-market returns and price paths with source, currency,
adjustment, and missing-data disclosures. Optional on-demand fundamentals,
macro, news, and technical evidence remains independently labelled; none of it
proves why a price moved. Time-aware Second Brain and Brain Log work completed
in this development cycle also ships here. This major version marks the next
product generation, not a claim of a breaking migration or the full long-term
cross-market intelligence vision.

Added

  • Exchange-local adjusted-close view — the separate Yahoo local-date pair
    now reports exact-date adjusted coverage and, only when both paths are
    complete, an adjusted return and indexed path beside provider closes.
    Partial data never yields a shortened adjusted comparison.
  • Separate exchange-local comparison — selected Yahoo chart closes can now
    be compared on shared exchange-local calendar dates alongside, never in place
    of, the existing UTC result. Missing timezones or ambiguous date mappings
    degrade explicitly; local dates are not verified simultaneous sessions.
  • Exchange-local date disclosure — cross-market comparisons now show when
    selected Yahoo daily bars carry a different exchange-local calendar date
    than the UTC date used for alignment. Returns remain unchanged; this is not
    a verified exchange-session calendar.
  • First-published euro-area HICP check — an on-demand Eurostat panel shows
    first-published flash and final EA21 annual-change values beside matching
    current months. It exposes partial failures and provider flags without
    treating the archive as dated historical availability evidence.
  • FRED real-time evidence validation — US macro series now fail closed
    when returned real-time intervals miss the requested day or the bounded
    observation response is truncated, protecting the pair-end comparison from
    wrong-vintage or incomplete values.
  • Bounded SEC continuation cross-check — the on-demand submission check can
    inspect up to three SEC-declared older filing slices for claims absent from
    the recent index, distinguishing unchecked dates from checked-but-absent
    accessions without implying full historical coverage or dissemination time.
  • Euro-area unemployment vintage cross-check — the macro panel can
    separately inspect dated Eurostat unemployment releases from its sparse
    2021-onwards archive up to the pair end. It discloses provider flags, archive lag and
    changing euro-area composition without claiming complete historical
    availability or equating this series with current EA21 values.
  • Euro-area macro context pilot — an independent on-demand panel shows
    official Eurostat HICP/unemployment and ECB deposit-rate observations in the
    pair window, including source, reference period, provider flags, and partial
    failures. It uses no API key or sample fallback and makes no historical
    release-time or asset-causality claim.
  • Price-versus-FX endpoint attribution — eligible reporting-currency
    returns now disclose native price, FX-rate, and interaction components per
    asset and for the pair difference, using the same dated endpoint evidence.
    This is arithmetic attribution, not a causal market explanation.
  • Full shared-date FX path — optional reporting-currency comparisons now
    expose an indexed, inspectable converted path and dated FX evidence on every
    shared observation. Missing interior rates withhold the path without
    changing valid endpoint results or the native comparison.
  • Optional reporting-currency endpoint returns — cross-market comparisons
    can show a separate pair return in a selected currency using the exact shared
    price endpoints and dated FX evidence. Unknown/subunit quote units or missing
    rates withhold the result; native returns remain unchanged.
  • Selected-history quote-unit disclosure — comparisons retain the quote
    unit reported by the selected Yahoo chart, including non-ISO units, and show
    when the two reported units differ. Other history paths remain unknown; no
    currency is inferred and no FX conversion is performed.
  • FRED pair-end real-time cross-check — the macro panel can separately
    request FRED's view as of the pair's end date and show reference-period values
    that differ from, or are absent in, the current view. Changed metadata or
    failed series are not compared; daily provider vintages are not intraday
    release records or evidence of price causation.
  • Historical macro observation candidates — comparison pairs can separately
    inspect current-vintage FRED CPI, unemployment, and policy-rate observations
    inside their actual window. The panel distinguishes reference periods from
    release timing, discloses metadata and provider failures, and never uses
    sample values or attributes price moves to macro data.
  • Price-basis diagnostics for comparisons — paired feeds now disclose
    matching, mixed, unknown, or unavailable request-level adjustment labels.
    Where Yahoo-adjusted coverage is complete, same-date adjusted-minus-provider
    return differences show the impact on each asset and pair without changing
    the primary comparison or claiming verified corporate-action adjustments.
  • Optional SEC submission cross-check — from the filed-facts panel, users
    can separately check displayed accession/form/filed-date claims against the
    current recent submissions index. Matched, mismatched, absent, and ambiguous
    index rows remain distinct; provider failure does not discard Company Facts.
    Older continuation files and historical dissemination are not verified.
  • Same-period SEC disclosure differences — the API and comparison panel
    group differing accession-tagged values only when concept, unit, and fiscal
    duration match exactly. Full eligible counts precede bounded display, and
    within-accession conflicts are flagged. Groups are review candidates, not
    verified revisions, corrections, or historical provider vintages.
  • On-demand SEC filing-facts review — the cross-market comparison screen
    can inspect each symbol's accession-tagged SEC facts within the observed
    pair window. It keeps this evidence separate from FMP candidates and saved
    captures, and explains missing configuration, ticker coverage, and provider
    failure without treating filed facts as a verified revision sequence.
  • SEC accession-tagged filing facts — an opt-in, authenticated API checks
    exact US ticker/CIK matches and returns bounded current Company Facts for
    selected US-GAAP income and diluted-EPS concepts. It retains accession,
    filed date, fiscal period, form, concept, unit, and value without blending
    this source into FMP captures or claiming an archived vintage or revision
    sequence. Requires a host-configured SEC user agent.
  • Conflicting close-date disclosure — market comparisons now withhold a
    UTC date when the selected chart payload contains different provider or Yahoo-
    adjusted closes for that date, rather than taking the last row. Identical
    duplicates remain usable. The API and browser report bounded conflict dates;
    overlap and adjusted coverage reflect withheld observations. Upstream adapter
    filtering is not audited.
  • Separate adjusted pair comparison — when both selected Yahoo histories
    have adjusted closes on every primary shared date, the API and browser show
    a separate indexed path and adjusted return difference. Partial or one-sided
    coverage shows no adjusted pair; primary provider-close results are unchanged.
    Returns remain native-quote, not FX-normalized; Yahoo adjustments are
    retrospective and unverified.
  • Honest comparison price basis — the API and browser now call the primary
    series provider closes rather than asserting every selected feed is unadjusted.
    Per-asset labels distinguish Alpaca raw and FMP non-split-adjusted requests
    from paths with unspecified adjustment basis. Calculations are unchanged;
    reported requests do not verify returned prices or make mixed-feed pairs
    decision-grade.
  • Unadjusted FMP comparison fallback — when adapter and Yahoo daily history
    are unavailable, the comparison can use validated FMP non-split-adjusted EOD
    rows and names that feed. Empty Yahoo charts no longer mask this fallback.
    Access depends on FMP credentials/plan and symbol coverage; other FMP history
    consumers are unchanged.
  • Own-date Yahoo-adjusted observations — cross-market comparisons now
    disclose adjusted-close coverage on each asset's own accepted dates and show
    a separate return, drawdown, and 20-close gap only when coverage is complete.
    Crypto weekends can contribute without changing the primary shared-date,
    provider-close comparison. Yahoo adjustments remain retrospective and unverified.
  • Observed fundamentals changes between captures — an owner-scoped API and
    browser review compare two retained captures of the same symbol, showing
    source-dated candidate sets seen only earlier, only later, or with different
    values. Empty/failed captures are not compared, and observed differences are
    not labeled provider revisions or historical market disclosures.
  • Terminal-observed fundamentals as-of lookup — an authenticated API
    selects the latest retained owner capture at or before a timezone-aware
    instant. It returns failed/empty observations without falling back to older
    successes, and distinguishes no retained capture from no provider records.
    This is not a provider revision history or proof of past market knowledge.
  • Fundamentals capture and review in cross-market context — the comparison
    panel now lets a user deliberately capture current eligible fundamentals for
    either symbol and inspect recent saved observations, including conflicts and
    empty or failed fetches. A capture is a new fetch across eligible dates, not
    an archive of the date-limited panel or a historical market vintage.
  • Explicit fundamentals observation captures — an authenticated,
    owner-scoped API can snapshot the source-dated values retrieved now, with UTC
    capture time, status, content hash, list/read, and explicit deletion. Conflicting
    values remain distinct. The new table does not rewrite legacy fundamentals,
    backfill past vintages, or make current-fetch records historical proof.
  • Adapter-selected Yahoo chart metadata — market comparisons now retain
    reported split/dividend events and adjusted closes when the selected crypto
    or Yahoo adapter used a Yahoo chart. Adjusted values are aligned only to
    accepted price rows; raw comparisons are unchanged, and provider metadata is
    not an audit of adjustment quality.
  • Underlying history-feed disclosure — market comparisons now separate
    the winning adapter from the per-request feed reported by crypto and Yahoo
    adapters, including failover. Other adapters remain unknown when they do not
    report a feed; feed identity alone does not validate prices or metadata.
  • Own-date technical observations — comparisons now show a separate
    descriptive drawdown and 20-close gap for each asset on all of its available
    UTC close dates inside the pair window. Counts disclose dates outside pair
    overlap, notably crypto weekends; the paired path and returns are unchanged.
  • Fundamental-candidate conflict disclosure — when a current provider
    fetch returns different numeric values for the same source-dated metric,
    period, and provider, the comparison withholds that value and shows the
    conflict instead of silently choosing the first. This is not a historical
    revision archive.
  • Separate adjusted-close observations — where Yahoo supplies adjusted
    closes for every pair-shared date, comparisons now show per-asset adjusted
    return, drawdown, and 20-shared-close gap beside—not instead of—the primary
    comparison. Partial coverage produces no adjusted measure; adjustment quality
    and historical vintage remain unverified.
  • Adjusted-close coverage disclosure — comparisons now report how many
    shared dates have usable Yahoo adjusted closes, or mark the selected history
    path unavailable for this metadata. The primary chart, returns, and technical
    measures remain provider-close; no vintage or adjustment audit is implied.
  • Corporate-action disclosure for comparison paths — when a selected
    Yahoo chart response contains event metadata, its split/dividend dates appear
    beside the provider-close technical measures. Empty marker lists are not proof
    that no action occurred; paths without event metadata report unavailable.
  • Shared-date technical observations — available market comparisons now
    show maximum observed drawdown and distance from a 20-shared-close average
    for each symbol, with explicit observation dates and insufficient-data state.
    These provider-close measures are descriptive and may reflect corporate
    actions; they are not trading signals.
  • Dated fundamentals candidates in market comparisons — an on-demand
    panel checks each pair's observed window for source-reported revenue, net
    income, EPS, and free-cash-flow releases. Estimated dates are excluded;
    missing coverage and per-symbol failures remain explicit. Values retain
    provider units and no historical revision fidelity is claimed.
  • Private Brain retrieval evaluation harness — a read-only runner scores
    dated, owner-reviewed cases for current/history recall, chronology order,
    unrelated-source intrusions, and index freshness. Real Hermes cases remain
    private and must be measured before changing retrieval weights.
  • Brain Log evidence change signals — opening a saved memo compares dated
    citation identities with live owner-scoped records and marks matching,
    changed, unavailable, or unverifiable evidence. The saved answer remains
    immutable, and the UI warns before promoting a memo with changed evidence.
  • Reviewed Brain-to-Note promotion — a saved Brain memo can become an
    editable, user-confirmed Note with provenance back to its immutable source.
    The Note enters normal indexing; the memo itself stays out of retrieval.
  • Browser Brain Log — completed Second Brain answers can be saved explicitly
    and revisited as dated research memos with their original citations. The log
    supports title, symbol, tags, annotation, pinning, and confirmed deletion;
    partial or degraded answers cannot be saved.
  • Brain Log persistence foundation — authenticated users can explicitly save
    completed Second Brain answers as owner-scoped, immutable research-memo
    snapshots with dated citations and model provenance. Organization metadata can
    be edited and memos can be listed, read, filtered, pinned, or deleted without
    placing derived model output back into the retrieval index.
  • Time-aware Second Brain evidence — private-memory chunks and citations now
    carry effective, recorded, and updated timestamps. External note ingestion
    accepts an optional source effective_at distinct from ingestion time, and
    citation cards expose the date used by synthesis.
  • Effective-date note controls — the Notes composer and editor can now set
    or clear when information applied, converting the browser-local value to the
    timezone-aware API contract. Notes distinguish effective time from their
    last update in the record.

Changed

  • Raw Alpaca comparison path — cross-market comparisons now request raw
    Alpaca stock bars regardless of the general Alpaca adjustment setting and
    disclose the selected bar feed plus raw adjustment. Other Alpaca workflows
    retain their configured setting; feed identity is not price validation.
  • Point-in-time fundamentals dating — ingested FMP records retain their
    fiscal period end and use only source-reported filing/acceptance dates that
    follow it; otherwise availability is conservatively estimated and marked.
    Missing release dates are no longer replaced with ingestion time, FY annual
    estimates use the annual lag, and as-of snapshots prefer dated fiscal periods
    and confirmed releases. This does not yet expose fundamentals in comparisons.
  • Temporal retrieval and supersession — Second Brain queries retrieve a
    broader semantic candidate pool and apply a bounded recency signal only among
    relevant evidence. Dated context instructs synthesis to treat newer
    incompatible evidence about the same subject as the current view, preserve and
    cite the superseded history, and report ambiguous chronology instead of
    flattening every note into an equally current claim.
  • Visible Notes and indexing lifecycle — Notes now expose initial loading,
    request failure with retry, and the queued background-indexing state after a
    save. Manual Second Brain reindexing reports active work and its final chunk
    totals instead of looking like a stalled screen.
  • Provider-tolerant Second Brain answers — an unsupported, empty, or
    interrupted provider stream now retries through the ordinary chat-completion
    contract and replaces partial output with the complete answer. The Brain only
    reports the LLM unavailable when both provider paths fail. Streaming now emits
    idle heartbeats for reasoning models, requires a provider completion marker,
    raises the normal Second Brain synthesis budget from 600 to 2,048 tokens, and
    retries token-limit truncation once at 6,144 rather than presenting a cut-off
    answer as successful.

Fixed

  • Proxy suggestion clicks — clicking a search suggestion now adds the proxy
    as reliably as selecting it with Enter; pressing the option no longer blurs
    the picker before the click can be handled.
  • FRED key in Docker Compose — forward FRED_API_KEY from .env into the
    backend container so on-demand US macro context can use a configured key.
    The panel now labels its series as US-wide rather than
    ticker-specific and distinguishes missing configuration from empty results.