ESP8266 Arduino reading slave Picaxe via I2C with level shifter = unreliable.

I've got a Wemos D1 (ESP8266) running my arduino program that is supposed to grab a few bytes out of a picaxe set up in hardware I2C slave mode. Supposedly, I should be able to run a program on my picaxe and write to some registers that can be access on demand via I2C from some other device. The Picaxe pretends to be an eeprom. So far, I can get the data I want 10% of the time. The majority of what I get back is either 0xFF, 0xEE or 0x00. I've tried slowing down and speeding up the I2C bus. I've confirmed every I can (o-scope handy) that the voltages on either side are where they need to be during all phases of the program... I've swapped out everything except the level shifter. The results of 0xFF seem somewhat cyclical. What else could I be doing wrong?

relevant picaxe code:

init:
symbol Local_Digital_Air_Temp = w0 ; confirmed working
hi2csetup i2cslave, %10100000
main:
readtemp12 B.0, Local_Digital_Air_Temp ; confirmed working
put 0,Local_Digital_Air_Temp ; confirmed working
debug  ; I've tried with and without this debug and with/without pauses.
goto main ; confirmed working

Relevant Arduino code:

#include <Arduino.h>
#include <Wire.h>
#include <extEEPROM.h>
float  h1, t1, d1, s1, s2, s3, a0, a1, a2 ,a3, a4, a5, a6, a7;
String hh1, tt1, dd1, ss1, aa0, aa1, aa2, aa3, aa4, aa5, aa6, aa7, Upload, AHP;
extEEPROM myEEPROM(kbits_2, 1, 1, 0x50);
void setup() {
Wire.begin();
myEEPROM.begin(twiClock100kHz);
}
void loop() {  
byte1 = myEEPROM.read(0);
AHP = String(byte1, DEC);
Upload = String("Sensor,Device=Tate01 AirHumidPercent=" + AHP);
Serial.println(Upload);
}

Output looks like this:

Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=10
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=168
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=254
Sensor,Device=Tate01 AirHumidPercent=10
Sensor,Device=Tate01 AirHumidPercent=169
Sensor,Device=Tate01 AirHumidPercent=0
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=253
Sensor,Device=Tate01 AirHumidPercent=254

The instances of 168 and 169 are correct results.

What kind of level shifter are you using?
I am using a 4-channel level shifter with BSS138 MOSFETs and I2C is working fine (4-channel I2C-safe Bi-directional Logic Level Converter [BSS138] : ID 757 : $3.95 : Adafruit Industries, Unique & fun DIY electronics and kits).

But I had problems with an 8-channel level shifter, based on a TXB0108 chip (8-channel Bi-directional Logic Level Converter [TXB0108] : ID 395 : $7.95 : Adafruit Industries, Unique & fun DIY electronics and kits).

This is the exact listing I bought from.

I figured the level shifter wasn't the problem due to the cyclical nature of the error. Maybe my lighting and other nearby electronics are messing with the signal and it's happening on certain places on my 60hz mains EMI... but when I put it on the scope, I see fairly well-defined lines and edges. Total wire length chip to chip is maybe 24 inches across twisted pairs from a cat5e cable. (Maybe my twists are a bad thing?) I'm going to try running the picaxe at 3.3v and remove the level shifter to see if that makes a difference.

I ended up scrapping requesting data via I2C from the Picaxe. Instead I have the Picaxe just send data to the Arudino every two second via normal 1200bps serial. Then i put the 5v serial into a potentiometer used as a voltage divider. I tweeked the pot's output until I saw 0-3 volts on the scope. I used a 10k but a 1k would have been better in hindsight. Maybe the pullup resistors on the level shifter (10k on each side) were too strong. I added more with zero benefit... Maybe the arduino or picaxe weren't close enough in clock reliability to handle the faster I2C where 1200 baud and 9600 baud serial works fine? In any case, now I have one wire communication and instead of the arduino pulling the data, I have the picaxe pushing it over and the arduino just buffers it until I get it parsing it. What a hassle. Side note, level shifter works perfectly with the DHT11, not that I need it but it was easier than desoldering stuff...