Files
com_r35157_nenjim-hubd-impl…/openspec/changes/archive/2026-10-26-104-jupiter-estimated-value/verification.md
T

4.3 KiB

Verification — issue #104

Verified locally on 2026-10-26. Implementation remains uncommitted and unpushed. No deployment, Hub restart, signing, trading, new venue request or price source.

Delivered behavior

  • The existing Jupiter overview GET preserves optional valueUsd as an exact decimal conversion from integer micro-USD. Zero, signed and large values survive; missing/null remains unavailable and malformed fields fail the complete observation. The reported number is used unchanged.
  • Immutable Metrics carry Jupiter/Phoenix estimate sources through account-aware venue, wallet and root totals. Sources are defensively copied. Shared Cross balances are counted once and position-only Cross Value remains inapplicable. Incomplete totals remain unavailable; their tooltips still explain the contributing estimate sources.
  • Available estimated Value displays one ≈ before the existing USD formatting and two-decimal rounding. Missing values show — without a numeric marker. Source-specific Value tooltips explain Jupiter's reported estimate and valuation uncertainty, Phoenix's estimated closing Value, and the difference from actual closing proceeds.
  • Whole-venue failure retention keeps original positions, source qualifications, observation time and last-success time. Successful recovery replaces observations, including replacing old Value with missing Value or clearing a successful empty scope. No polling/request/configuration behavior changed.
  • Current repository documentation and r35157_docs/projects/evelyn/README.md describe the new behavior and retain the real valuation limitations. The three affected main OpenSpec specifications are synced. Historical archived #100 documentation remains historical.

Checks

  • JAVA_HOME=/usr/local/software/java/jfx-25 ./gradlew build: successful; 42 existing tests, zero failures/errors/skips.
  • /tmp/Issue104Check.java: 63 focused assertions passed against the actual Jupiter HTTP reader, immutable model and background service using local HTTP fixtures. Covers exact 123234567 → 123.234567, zero/negative/above-binary-integer-precision amounts, missing/null, eleven malformed representations, unchanged historical fee example, stable independent metrics, Jupiter and mixed totals, Cross and isolated Phoenix, defensive source copies, failure retention and replacement/empty recovery.
  • /tmp/Issue104Preview.java: 60 JavaFX assertions passed against actual table cells and tooltips. This is an assertion count, not 60 distinct user scenarios. Covers ≈$123.23, ≈$0.00, ≈-$1.23, half-up rounding and tiny negative rounding to unsigned zero; complete and unavailable ancestor totals; Jupiter/Phoenix source explanations; Cross accounting; collapsed venue/Cross/wallet/root groups; unchanged rows/selection; retained/read-failed/recovered observations; empty and unknown hidden venues; independent Exposure/Collateral/Leverage/uPnL/Risk/TWAP and direction styles; horizontal scrolling.
  • Visually inspected /tmp/issue104-check/value-expanded.png, value-collapsed.png, value-incomplete.png, value-total-tooltip.png and value-small-window.png. Value was horizontally scrolled into the viewport before the final captures; the mixed tooltip is readable and bounded.
  • Existing temporary /tmp/Issue102Check.java and /tmp/Issue103Check.java passed their 68 risk and 32 TWAP assertions respectively. No permanent test sources or dependencies were added.
  • Strict validation passes for 104-jupiter-estimated-value and main specifications jupiter-perps-overview, evelyn-perps-service and evelyn-perps-overview. Existing long paragraphs in the overview specification emit informational length hints only.
  • Working-tree and change-artifact whitespace checks pass, and all 22 local documentation links resolve, including the new Jupiter section anchor. The 22 pre-existing staged/deleted OpenSpec artifacts for #97, #99 and #103 remain untouched; no issue-104 file was staged.

Limits

Verification uses deterministic local fixtures, not live closing quotes or deployment to the running Hub. It establishes the reported-value pipeline, qualification and retention behavior, not correctness of Jupiter's valuation or equality with actual closing proceeds. The 24 October fee example in the Jupiter documentation is a preserved historical observation.