Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Follow-up causal result is now recorded in stacked draft PR #122. Exact head
This strengthens the finding from server temporal inconsistency to a deterministic client-state defect candidate for the tested reducer model. It still does not claim the production Tradernet UI uses that reducer or that order execution is affected. |
Purpose
A bounded, public, unauthenticated causal-integrity audit of Tradernet quote delivery. It reconstructs the historical Done Finance / Tradernet scenarios without repeating mass or stress tests against production.
The causal path under test is:
Exact-head execution
5f0c82162d6cd37c6971a935c988d5008f34dd43;30273235870;success;8655725085;f644e12816cfed47eb7a7645e4a37fc8044e9db4016a30e692674304a27ba1fc;8655725709;1b58c8c4eaab25f88acc456bd2dc5930e0c7e8abc96b63cc4428e0e322fb733b;332adb094286b37b1814a661bcec864f5a31d2a62579e541676ec9dd25ea580b.The manifest binds expected, initial and final source identity to the same exact head and records clean initial/final worktrees.
Finding 1 — reconnect/resubscribe failure not reproduced
The public unauthenticated server opened in
demomode and deliveredqevents forAAPL.USandMSFT.USbefore and after one controlled disconnect.0;0;0.Verdict for this narrow scenario:
NOT_REPRODUCED.This does not prove that server-side zombie connections are cleaned up. That still requires server connection/subscription metrics, generation IDs, heartbeat timeout records and controlled staging tests.
Finding 2 — reproducible temporal data-integrity defect candidate
The expanded causal analysis found a stronger issue that the original reconnect check missed.
Within one ticker stream,
nandrevcontinued to increase, butlttrepeatedly moved backward by approximately 15 minutes.Exact-head run result:
17;AAPL.US,MSFT.US;Examples:
A separate repeated-subscription connection contained another
8approximately 15-minute backward jumps (4for AAPL and4for MSFT), for 25 observed temporal contradictions across three sequential public connection phases.Verdict:
DEFECT_CANDIDATEfor quote-stream temporal integrity.Causal hypotheses
qstream without an explicit source/provenance marker.ltthas different undocumented semantics for different partial-update producers.n/revmay overwrite a fresh last-trade time and price with stale values.User-visible risk
A client may appear healthy — connected socket, increasing sequence and increasing revision — while the visible last-trade time and potentially
ltpintermittently roll backward. This is a market-data integrity issue. The evidence does not establish any impact on order execution.Finding 3 — repeated subscription does not duplicate incremental delivery
On one public connection the exact same two-ticker subscription was sent once and then repeated once after four seconds.
11;22;0;NOT_REPRODUCEDfor duplicate-stream multiplication.However, the repeated subscription caused the server to resend one
init=1snapshot for each ticker using the current sequence/revision. This appears idempotent with respect to incremental delivery, but a client that sends duplicate subscriptions may still trigger repeated state reinitialization.Finding 4 — HTTP error semantics remain ambiguous
The legacy unauthenticated
getStockQuotesJsonrequests return HTTP200with an application error payload:{"error":"Invalid credentials","errMsg":"Invalid credentials","code":12}This is not classified as a security vulnerability. It is an observability/contract smell because status-only health checks can treat an authentication failure as transport success.
The public securities export route works with a literal
+ticker delimiter and returned two instrument rows.Documentation signal
The official Tradernet API navigation still exposes WebSocket real-time quote and market-depth subscription sections, but the WebSocket example page currently displays an example-loading error. This limits the ability to distinguish intended delayed/demo feed semantics from an implementation defect.
Hard boundary
Claim boundary
The evidence proves that the public demo
qstream emitted monotonicn/revalongside repeatedly non-monotoniclttvalues separated by approximately 15 minutes. It does not identify the upstream feed, venue or entitlement source because the payload does not expose explicit provenance. It also does not prove order-execution impact or a server-side resource leak.Stack
This remains a draft stacked PR and has not been merged.