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.