anchor.diff:    //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   
     const events = <%= raw @events_json.gsub("\n",'') %>;
  -  events.forEach((event) => cd.appendTrafficLight(event));
  +  events.forEach((event,index) => {
  +    event.index = index; // version 0 events don't store their index
  +    cd.appendTrafficLight(event);
  +  });
   
   });
   //--></script>
   
   <!-- The index of most-recent (rightmost) traffic-light -->
  -<!-- event is updated in the browser and sent back to the -->
  -<!-- web service as an optimization (so the web service -->
  -<!-- does not need to retrieve it from saver). -->
  +<!-- is updated in the browser and sent back to the web -->
  +<!-- service (on [test]) so the web service does not    -->
  +<!-- not need to retrieve it from saver). -->
   
   <input type="hidden" name="index" value="0">
   
  
positive.code:       });
        const $light = $div.append($img);
        $lights.append($light);
        $light.click(() => cd.setReviewData(version, id, groupId, avatarName, avatarIndex, wasIndex(), event.index));
        cd.setupTrafficLightTip($light, version, id, avatarIndex, wasIndex(), event.index);
        updateCounts(event);
      }
      wasIndex(event.index);
    };
  
    const isRag = (s) => ['red','amber','green'].includes(s);
  
negative.code: 
    cd.appendTrafficLight = (event) => {
      const colour = event.colour;
      const index = event.index;
      if (colour) {
        const $div = $('<div>', {
          'class':'diff-traffic-light',
          'data-id':id,
          'data-index':index,
          'data-avatar-index':avatarIndex,
          'data-colour':colour
        });
  