Skip to main content

Known limitations and consistency notes

This page records boundaries found during the implementation audit. It describes current behavior, not promises or completed features.

Analysis and credits

  • The charged analysis cost is a compiled 10-credit constant. Trader-BE also loads ANALYZE_COST, but the deduction path and cost endpoint currently use the constant. Configuration and behavior can diverge if an operator changes only the environment value.
  • Credits are deducted before the overview’s downstream analysis call. Automatic compensation exists only for a completed response whose confidence is below 0.25. Timeouts and general downstream failures do not have an automatic refund workflow.
  • Initialization can perform fact and claim model work before the paid overview. It does not charge credits, so repeated abandoned initializations can consume model quota without consuming product credits.
  • The explicit initialization context identifier is used for supporting tabs but is not forwarded by Trader-BE’s overview request. Deterministic caches reduce duplication, but the two calls are not bound by that explicit context ID.
  • The analyzer request types use an asset list while current context construction selects only the first item. Batch behavior should not be inferred.

Identity and authorization

  • Access and refresh tokens are stored in browser local storage. This makes strict cross-site scripting prevention and dependency hygiene essential.
  • Several protected resources include an account identifier in the URL. Security depends on Trader-BE verifying that identifier against the authenticated identity or constraining repository access. New endpoints must not trust the path alone.
  • The frontend admin guard is presentation only. Server-side role enforcement remains mandatory.

Data and model quality

  • LLM schema repair may insert zero-like values into missing required fields. A structurally valid response is not proof that every value came from evidence.
  • Source repetition can arise from syndication. URL deduplication and clustering reduce this but cannot prove source independence.
  • Provider keys are allowed to be empty. The service may remain available with materially thinner evidence.
  • Historical comparison depends on optional database connectivity and sufficient prior ingestion. The absence of matches may mean insufficient history rather than a unique market condition.
  • The local LLM model list is configuration, not live provider discovery. A listed model can still be unavailable to the configured Google project.

Availability and persistence

  • Trader-BE can run without PostgreSQL using in-memory repositories. This mode is non-durable and inappropriate for production credits or payments.
  • Trader-BE cannot run normally without Redis. Clearing Redis also invalidates active supporting-tab contexts.
  • News-Analyzer can provide selected current-data work without its database, but durable run retrieval and historical depth are reduced.
  • Browser tab responses live only in page memory. Reloading can cause a new server request even when the user just viewed the tab.

Networking and configuration

  • Older material referred to News-Analyzer on port 8087. The current application listener is 8080 inside its container; external routing may still expose another port.
  • Trader-BE’s production News-Analyzer address is derived from DOMAIN_NAME. NEWS_ANALYZER_PORT appears in compose configuration but is not used by that address-selection code.
  • The frontend analysis helper accepts an external abort signal but does not wire it into the internal fetch controller. External cancellation is not immediate.
  • Health endpoints are liveness checks and do not prove provider keys, Gemini quota, database mode, or payment webhook readiness.

Documentation maintenance rule

When implementation changes, update the component guide, the end-to-end flow if a cross-service contract changed, the operations guide if configuration or deployment changed, and this page if a limitation was resolved or introduced. Examples should be expressed as tables and human-language field descriptions rather than copied source or request snippets.