Replace the hardcoded sample positions with real Jupiter positions for the configured PROD and TEST wallets. Reuse the existing JupiterPerpsService.getOpenPositions(walletId) integration.
Scope
Configure the wallet lists below in NenjimHub and pass them to the corresponding EvelynPerpsService instances.
Inject the existing PROD and TEST Jupiter integrations into their respective Perps service instances.
Fetch positions asynchronously on startup, then refresh every 60 seconds without overlapping refresh cycles.
Keep getPositionsSnapshot() parameterless and return the current immutable in-memory snapshot without triggering integration calls.
Preserve EMC's three-second polling interval.
Translate Jupiter positions into the existing snapshot:
Use the position account address as the stable position ID.
Resolve the traded token mint to an instrument label such as SOL-PERP. For unknown mints, use the mint address rather than dropping the position.
Map Long/Short direction and use positionSize() for the USD size.
Keep ordering deterministic across refreshes.
Remove all sample position generation, including Phoenix examples. Display only Jupiter data. Remove the sample-data and illustrative-Phoenix notices from EMC while preserving the three columns, hierarchy, formatting, colors, selection, and expansion state.
Wallet configuration remains hardcoded in NenjimHub. Use wallet addresses as stable identities and display labels for now.
Also update relevant parts of the system documentation in 'r35157_docs'.
Refresh behavior
Handle failures per wallet: retain its last successful positions, log the failure, and continue refreshing the other wallets.
A successful empty result removes that wallet's previously displayed positions.
Before the first successful read, do not generate placeholder positions.
Respect the existing integration cache; do not promise fresher data than it provides.
Keep refresh work independent of EMC window visibility.
Acceptance criteria
Each environment displays actual Jupiter positions only for its configured wallets.
Initial retrieval and subsequent 60-second refreshes run without blocking EMC.
EMC snapshot reads do not cause integration calls.
Newly discovered and closed positions appear and disappear after successful refreshes.
Unchanged positions retain their row identities, selection, and expansion state.
One wallet's lookup failure does not clear its previous data or prevent other wallets from refreshing.
No sample positions or misleading sample-data notices remain.
No position-management operations or transaction signing are invoked.
Documentation in directory 'r35157_docs' should be updated to reflect these changes and remove parts that is not longer applicable.
Out of scope
Phoenix integration, trading, additional columns, stale-data indicators, and an advanced configuration system.
Replace the hardcoded sample positions with real Jupiter positions for the configured PROD and TEST wallets. Reuse the existing `JupiterPerpsService.getOpenPositions(walletId)` integration.
**Scope**
- Configure the wallet lists below in NenjimHub and pass them to the corresponding `EvelynPerpsService` instances.
- Inject the existing PROD and TEST Jupiter integrations into their respective Perps service instances.
- Fetch positions asynchronously on startup, then refresh every 60 seconds without overlapping refresh cycles.
- Keep `getPositionsSnapshot()` parameterless and return the current immutable in-memory snapshot without triggering integration calls.
- Preserve EMC's three-second polling interval.
Translate Jupiter positions into the existing snapshot:
- Use the position account address as the stable position ID.
- Resolve the traded token mint to an instrument label such as `SOL-PERP`. For unknown mints, use the mint address rather than dropping the position.
- Map Long/Short direction and use `positionSize()` for the USD size.
- Keep ordering deterministic across refreshes.
Remove all sample position generation, including Phoenix examples. Display only Jupiter data. Remove the sample-data and illustrative-Phoenix notices from EMC while preserving the three columns, hierarchy, formatting, colors, selection, and expansion state.
Wallet configuration remains hardcoded in NenjimHub. Use wallet addresses as stable identities and display labels for now.
**PROD wallets**
```text
H5Yrdm7B4FHhTxhPw9SVwFzQyTEL6bAPptZuTyRxcepq
7PttBqapKgydZG1KGnv4hDFRVRumLqRTAaqN7SbcDmok
vshTPUDaZjU94uM85cDiu5nyVxUQifkeMsGa3UBL6Ct
8XGrkDQCSHVP9VnXGReRodPwJ5bU95PUnCY7kPYAb2p5
4wzxcYQ8o3LZsKiMBmJEHu5WXCJvUsUqxBWsZZuXea9j
HM13QYMvDEBB1HfHwc6LPFyvX26bJQWiz4BLeUdwrKyF
```
**TEST wallets**
```text
6NyYEoXmJyBXvU4pvv9aoxZNdyqqtkmPBZFEDkRDHcqp
```
Also update relevant parts of the system documentation in 'r35157_docs'.
**Refresh behavior**
- Handle failures per wallet: retain its last successful positions, log the failure, and continue refreshing the other wallets.
- A successful empty result removes that wallet's previously displayed positions.
- Before the first successful read, do not generate placeholder positions.
- Respect the existing integration cache; do not promise fresher data than it provides.
- Keep refresh work independent of EMC window visibility.
**Acceptance criteria**
- Each environment displays actual Jupiter positions only for its configured wallets.
- Initial retrieval and subsequent 60-second refreshes run without blocking EMC.
- EMC snapshot reads do not cause integration calls.
- Newly discovered and closed positions appear and disappear after successful refreshes.
- Unchanged positions retain their row identities, selection, and expansion state.
- One wallet's lookup failure does not clear its previous data or prevent other wallets from refreshing.
- No sample positions or misleading sample-data notices remain.
- No position-management operations or transaction signing are invoked.
- Documentation in directory 'r35157_docs' should be updated to reflect these changes and remove parts that is not longer applicable.
**Out of scope**
Phoenix integration, trading, additional columns, stale-data indicators, and an advanced configuration system.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Replace the hardcoded sample positions with real Jupiter positions for the configured PROD and TEST wallets. Reuse the existing
JupiterPerpsService.getOpenPositions(walletId)integration.Scope
EvelynPerpsServiceinstances.getPositionsSnapshot()parameterless and return the current immutable in-memory snapshot without triggering integration calls.Translate Jupiter positions into the existing snapshot:
SOL-PERP. For unknown mints, use the mint address rather than dropping the position.positionSize()for the USD size.Remove all sample position generation, including Phoenix examples. Display only Jupiter data. Remove the sample-data and illustrative-Phoenix notices from EMC while preserving the three columns, hierarchy, formatting, colors, selection, and expansion state.
Wallet configuration remains hardcoded in NenjimHub. Use wallet addresses as stable identities and display labels for now.
PROD wallets
TEST wallets
Also update relevant parts of the system documentation in 'r35157_docs'.
Refresh behavior
Acceptance criteria
Out of scope
Phoenix integration, trading, additional columns, stale-data indicators, and an advanced configuration system.