Thanks Undral for the response!
Let me better explain my workflow.
Upon startup
1. Query json REST endpoint
2. Convert json data to list of graphics. There is an existing identifier in the data that is set to the object id field in the graphic.
3. Create client side FeatureLayer from graphics.
Successive polls
1. Query json REST endpoint
2. Convert json data to list of graphics. There is an existing identifier in the data that is set to the object id field in the graphic.
2. After querying the feautreLayerView, determine which graphics need to be updated, deleted, and added by comparing object id fields between the latest graphics from the rest endpoint and the graphics from the featureLayerView query
3. Use the featureLayer.applyEdits method to update the featurelayer graphics
The issue that I am seeing is that when graphics are added to a client side featurelayer through the applyEdits method, the object ids for the graphics are changed from what was passed in to whatever the featurelayer decides their objectids should be; which appears to be "calculated by incrementing the max existing object Id".
When graphics are first added to the featurelayer through the source field, their object ids do not change.
Ended up creating codepen to showcase the behavior I'm seeing.
https://codepen.io/MotoTK/pen/voRLpY?editors=0010