From c195d216ddbd4e15036832a706e794ece08b7cfb Mon Sep 17 00:00:00 2001 From: tactino <18781106300@163.com> Date: Fri, 2 Oct 2026 17:24:38 -0400 Subject: [PATCH 1/2] E55: protocol, after the pilots and before the registered runs - does a step ledger kept on both sides of the boundary catch and locate every fault in what crosses, with no reference run and across machines E54's faults at doses one, 0.01 and 1.0 on Pendulum: 216 runs on one machine, and 24 with the env client on the laptop and SB3 on guangzhao. The ledger is a gymnasium wrapper around each environment; ledger.py compares it with the trainer's trace, step by step. --- experiments/e55-step-ledger/PROTOCOL.md | 144 ++++++ experiments/e55-step-ledger/cross.sh | 43 ++ experiments/e55-step-ledger/faulty_client.py | 420 ++++++++++++++++++ experiments/e55-step-ledger/jobs.py | 41 ++ experiments/e55-step-ledger/ledger.py | 170 +++++++ .../results/pilot/cross-laptop-python.txt | 2 + .../results/pilot/cross-ledger.csv | 8 + .../results/pilot/same-ledger.csv | 73 +++ .../results/pilot/same-summary.txt | 87 ++++ experiments/e55-step-ledger/run.sh | 41 ++ experiments/e55-step-ledger/summarise.py | 268 +++++++++++ experiments/e55-step-ledger/train.py | 285 ++++++++++++ 12 files changed, 1582 insertions(+) create mode 100644 experiments/e55-step-ledger/PROTOCOL.md create mode 100644 experiments/e55-step-ledger/cross.sh create mode 100644 experiments/e55-step-ledger/faulty_client.py create mode 100644 experiments/e55-step-ledger/jobs.py create mode 100644 experiments/e55-step-ledger/ledger.py create mode 100644 experiments/e55-step-ledger/results/pilot/cross-laptop-python.txt create mode 100644 experiments/e55-step-ledger/results/pilot/cross-ledger.csv create mode 100644 experiments/e55-step-ledger/results/pilot/same-ledger.csv create mode 100644 experiments/e55-step-ledger/results/pilot/same-summary.txt create mode 100644 experiments/e55-step-ledger/run.sh create mode 100644 experiments/e55-step-ledger/summarise.py create mode 100644 experiments/e55-step-ledger/train.py diff --git a/experiments/e55-step-ledger/PROTOCOL.md b/experiments/e55-step-ledger/PROTOCOL.md new file mode 100644 index 0000000..9dc187e --- /dev/null +++ b/experiments/e55-step-ledger/PROTOCOL.md @@ -0,0 +1,144 @@ +# E55 measurement protocol (pre-registered) + +**Written 2026-10-02, after the pilots in `results/pilot/`, before the +registered runs.** + +This file must not be edited after the first registered data point. Anything +learned afterwards goes in `AMENDMENT.md`, dated. + +--- + +## The question + +E54 found two checks that between them catch every fault it injected: +- **byte identity** needs a fault-free run at the same seed on the same + machine, so it cannot judge a run across machines; +- **reconciliation** with an env-side record of episodes cannot see faults + in observations or actions, which leave the episodes as the environment + produced them. + +A boundary fault is a difference between what the environment took and +gave and what the trainer sent and received. So: + +**Does a step ledger kept on both sides of the boundary, compared step by +step, catch every fault in what crosses, and locate it? Does it do so with +no reference run, and with the two sides on different machines?** + +--- + +## Declared in advance: what was already known + +1. **The code**, E54's with two additions. + - `faulty_client.py`: E54's client. Each environment is wrapped in + `LedgerEnv`, a gymnasium wrapper outside the client's own code. It + records, for each step: + - the observation the environment had given before it; + - the action it was handed; + - the reward, flags and observation it returned. + `--ledger` saves the record. + - `train.py`: E54's, plus two things: + - it passes `--ledger` to the client; + - `--external-client`: the bridge listens on every address and starts + no client, for runs whose client is on another machine (`cross.sh`). + Its `--trace` keeps the trainer's side, as in E54. + - `ledger.py` compares the two sides, env by env, step by step: + observation, action, reward, episode end, time limit, final + observation, and the number of steps. It needs no fault-free run. + - `jobs.py`, `run.sh` (same machine, ports 8870-8879), `cross.sh` + (across machines, port 8880), and E54's `summarise.py`. +2. **The faults and doses** are E54's (its `PROTOCOL.md`), at doses one, + 0.01 and 1.0. +3. **The machines.** + - guangzhao: E54's `bridges-venv`. + - the laptop: a Windows 11 laptop, Python 3.11 with gymnasium 1.3.0 and + numpy 2.3.2. It reaches guangzhao over Tailscale at about 5 ms. +4. **The pilots**, at seed 9, in `results/pilot/`. + - **Same machine** (`same-ledger.csv`, `same-summary.txt`): 72 runs. + - `none` ended on E50's pilot weights (`3721266c`), so the wrapper + changes nothing that crosses. + - The ledger caught all 63 client-fault runs with a changed value, at + their first changed cell and field. + - It found no difference in the 3 controls and the 6 log-fault runs: + 72 of 72 right. + - One defect, fixed before this protocol: `ledger.py` crashed on a run + whose envs never stepped (`step:fill` at every value). + - **Across machines** (`cross-ledger.csv`): 7 runs, at one cell where + there was a fault: + - `none`, `obs:stale`, `action:zero`, `reward:stale`, + `truncated:as-term`, `step:fill` and `log:short`; + - 7 of 7 right. + - The fault-free run's weights were `be73067e`, not guangzhao's + `3721266c`. Across machines, byte identity would have called a + fault-free run faulty; the ledger found no difference. + +--- + +## Design + +- **Same machine** (`bash run.sh results registered 10` on guangzhao): + Pendulum, seeds 0-2. The 3 controls, plus the 21 client faults and 2 log + faults at doses one, 0.01 and 1.0. Every run is traced and ledgered: + 3 x (3 + 69) = 216 runs. +- **Across machines** (`bash cross.sh results/cross 0` on the laptop): + Pendulum, seed 0. SB3 and the bridge run on guangzhao, the env client on + the laptop. `none`, then the 21 client faults and 2 log faults at one + cell: 24 runs, one at a time. + +Then `python ledger.py results` and `python ledger.py results/cross`, and +`python summarise.py` on each, for E54's checks. + +--- + +## How the ledger is judged + +A run is **caught** when anything differs between the two sides. + +Its first difference is the lowest step that differs, then the lowest env, +then the first field in the order above. It is **right** when: +- for a client fault that changed a value, that step and env are the + fault's first changed cell (`fault.json`), and the field is the one the + fault touches (`ledger.py` maps each); +- for a control, a log fault, or a run whose fault changed no value, + nothing differs. + +--- + +## Checks that the runs are valid + +- **V1:** every run reaches its 102,400 steps, and its client exits 0. +- **V2:** on guangzhao, `none` ends on E50's weights at seeds 0, 1 and 2 + (`ec5b8226`, `062e92e3`, `3a8d968f`): the ledger's wrapper changes nothing + that crosses. + +--- + +## Predictions, and what falsifies each + +**P1 - On one machine, the ledger catches and locates every fault in what +crosses.** Every client-fault run with a changed value is caught, at every +dose, and its first difference is right. Falsified by one run that is not +caught, or not right. + +**P2 - It raises no false alarm.** No control and no log-fault run shows a +difference, on one machine or across machines. Falsified by one that does. + +**P3 - Across machines too.** With the env client on the laptop, all 21 +client faults at one cell are caught, and each first difference is right. +`none` shows no difference. Falsified by one run against either. + +**P4 - Byte identity cannot judge across machines.** The fault-free run +across machines ends on weights other than guangzhao's fault-free run at +seed 0 (`ec5b8226`). Falsified if they are the same. + +**P5 - The ledger and the record catch every silent fault, on any +machine.** Every client- and log-fault run with a changed value is caught +by the ledger or by E54's record, on one machine and across machines. +Falsified by one run that neither catches. + +> Grounds: the pilots, above. P1-P3 follow from what a boundary fault is, +> if the ledger sits outside the client's code: the pilots test that it +> does. P4 is E43's and E50's finding that a seed belongs to a machine. + +**Reported, not predicted:** +- the time each run took across machines; +- E54's checks on every run: rule, weights and record. diff --git a/experiments/e55-step-ledger/cross.sh b/experiments/e55-step-ledger/cross.sh new file mode 100644 index 0000000..45ec2c8 --- /dev/null +++ b/experiments/e55-step-ledger/cross.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# E55's runs across machines, from the laptop: SB3 and the bridge on guangzhao +# (train.py --external-client), the env client here, over Tailscale. One run at +# a time: none, then E54's 21 client faults and 2 log faults at one cell. +# bash cross.sh results/cross [SEED] # SEED defaults to 0 +# FAULTS="none obs:stale" bash cross.sh pilot/cross 9 # only these faults +# Each run's files from both machines end up in DIR/pendulum///seed/. +set -uo pipefail +unset HTTPS_PROXY HTTP_PROXY ALL_PROXY +H=guangzhao-memeseeks +R=zuogou/plugrl/exp/e55-step-ledger +GZ=100.75.226.89 +PORT=8880 +PY=/c/Users/75128/.claude/jobs/1fea619d/tmp/plugrl-rlinf/.venv/Scripts/python.exe +export OMP_NUM_THREADS=1 +cd "$(dirname "$0")" +DIR="${1:?results dir}"; SEED="${2:-0}" +CLIENT_FAULTS=$("$PY" -c "from faulty_client import SILENT; print(' '.join(SILENT))") +LOG_FAULTS="log:drop-first log:short" +mkdir -p "$DIR" +"$PY" --version > "$DIR/laptop-python.txt" 2>&1 +"$PY" -c "import numpy, gymnasium; print('numpy', numpy.__version__, 'gymnasium', gymnasium.__version__)" >> "$DIR/laptop-python.txt" + +for fault in ${FAULTS:-none $CLIENT_FAULTS $LOG_FAULTS}; do + dose=one; [ "$fault" = none ] && dose=1.0 + out="$DIR/pendulum/${fault//:/__}/$dose/seed$SEED" + mkdir -p "$out" + client_fault=$fault; case $fault in log:*) client_fault=none ;; esac + echo "== $fault $dose seed $SEED $(date +%T)" + ssh -n -o BatchMode=yes "$H" "cd ~/$R && mkdir -p $out && (OMP_NUM_THREADS=1 nohup ~/zuogou/plugrl/bridges-venv/bin/python train.py --env pendulum --fault $fault --dose $dose --seed $SEED --out $out --port $PORT --trace --external-client > $out/train.log 2>&1 &)" + "$PY" faulty_client.py --host "$GZ" --port "$PORT" --num-envs 16 --seed "$SEED" \ + --env-id Pendulum-v1 --action-high 2.0 --fault "$client_fault" --dose "$dose" \ + --record "$out/env_record.csv" --ledger "$out/ledger.npz" > "$out/client.log" 2>&1 + echo "client exit $?" >> "$out/client.log" + tail -n 2 "$out/client.log" + waited=0 + until ssh -n -o BatchMode=yes "$H" "test -f ~/$R/$out/result.json"; do + sleep 2; waited=$((waited + 2)) + if [ "$waited" -ge 300 ]; then echo "no result.json after 300 s: $out"; break; fi + done + ssh -n -o BatchMode=yes "$H" "cd ~/$R/$out && tar -cf - result.json trace.npz monitor.csv episodes.csv train.log" | tar --force-local -xf - -C "$out" +done +echo E55_CROSS_DONE diff --git a/experiments/e55-step-ledger/faulty_client.py b/experiments/e55-step-ledger/faulty_client.py new file mode 100644 index 0000000..b15cc7e --- /dev/null +++ b/experiments/e55-step-ledger/faulty_client.py @@ -0,0 +1,420 @@ +"""E55's env client: E54's faulty_client.py, plus a step ledger at the environment. + +--ledger writes, for every env, what that environment itself took and gave +at each of its steps: the observation it had given before the step, the +action it was handed, and the reward, flags and observation it returned. +The ledger is a gymnasium wrapper around each environment, outside the +client's own code, so a fault in the client's encoding does not reach it. +Everything below is E54's, unchanged. + +E54's docstring: + +E54's env client: E50's gym_client.py, with one fault injected at the boundary. + + python faulty_client.py --port 8854 --seed 0 --fault reward:stale --dose 0.01 \ + --record runs/.../env_record.csv + +With --fault none it sends exactly what E50's client sent. Otherwise it +changes one field of what crosses the wire, with one operator, in a share of +the cells (vector step, env) where that field crosses. The environments +themselves are untouched, and --record writes each episode's return and +length as the environments produced them, before any fault: the record a +trainer's log can be checked against. + +Fields and operators. Each field takes the operators that make sense for it: + obs the observation in an infer (what the policy acts on) + action the action the client applies (as it decodes the reply) + reward the reward in a feedback + final-obs the observation an episode ended on, in its feedback (SB3 + bootstraps from it at a time limit) + zero the value replaced by zeros (a default filled in) + stale the value from the step before (a buffer reused) + swap the value from the next slot, (i + 1) mod n (a slot mixed up) + f16 the value rounded through float16 (a lossy encoding) + clip (action only) clipped to half its range: [-1, 1] for Pendulum's + [-2, 2] (a client that assumes another range) + terminated:spurious sent true where the episode did not end + truncated:drop a time limit is not sent: the client resets, the trainer + sees the episode go on + truncated:as-term a time limit is sent as a termination + step:fill the env is not stepped, and its feedback is filled in: + reward 0, the same observation, no episode end +(log:drop-first and log:short are the trainer's log's, in train.py.) + +Faults the bridge rejects, at one cell; the run is expected to fail loudly: + indices:reorder a feedback's rows, env_indices included, in reverse order + reward:short-array a feedback with one reward too few + +Controls, which change nothing training receives: + none, delay-1ms (sleep 1 ms before each feedback), wire-float64 + (observations sent as float64; the values are Pendulum's float32s). + +Doses: "one" is a single cell: in env 0, the first eligible one at or after +vector step 3,250 (no episode ends there) whose value the operator changes; a number p is each eligible cell with probability p, drawn +from a generator seeded 54 whatever the training seed, so every seed gets the +same cells. --record's sibling fault.json counts the cells whose value the +fault actually changed. +""" + +from __future__ import annotations + +import argparse +import csv +import json +import pathlib +import time + +import gymnasium as gym +import numpy as np +import websockets.exceptions +import websockets.sync.client + +from plugrl_protocol import msgpack_numpy + +STOP_REASON = "plugrl-server-stop" +CONTROLS = ("none", "delay-1ms", "wire-float64") +VALUE_OPS = ("zero", "stale", "swap", "f16") +SILENT = ( + tuple(f"obs:{op}" for op in VALUE_OPS) + + tuple(f"action:{op}" for op in VALUE_OPS + ("clip",)) + + tuple(f"reward:{op}" for op in VALUE_OPS) + + tuple(f"final-obs:{op}" for op in VALUE_OPS) + + ("terminated:spurious", "truncated:drop", "truncated:as-term", "step:fill") +) +LOUD = ("indices:reorder", "reward:short-array") +FAULTS = CONTROLS + SILENT + LOUD +ONE_STEP = 3_249 # 0-based: the 3,250th vector step, not an episode's last + + +def observation(obs: np.ndarray, fault: str) -> dict: + if fault == "wire-float64": + obs = obs.astype(np.float64) + return {"images": {}, "states": {"obs": obs}, "text": "gym"} + + +class LedgerEnv(gym.Wrapper): + """Records what the environment took and gave, step by step, as float32.""" + + def __init__(self, env) -> None: + super().__init__(env) + self.obs_in, self.action, self.reward = [], [], [] + self.terminated, self.truncated, self.obs_out = [], [], [] + self.current = None + + def reset(self, **kwargs): + obs, info = self.env.reset(**kwargs) + self.current = np.asarray(obs, dtype=np.float32).copy() + return obs, info + + def step(self, action): + obs, reward, terminated, truncated, info = self.env.step(action) + out = np.asarray(obs, dtype=np.float32).copy() + self.obs_in.append(self.current) + self.action.append(np.asarray(action, dtype=np.float32).copy()) + self.reward.append(np.float32(reward)) + self.terminated.append(bool(terminated)) + self.truncated.append(bool(truncated)) + self.obs_out.append(out) + self.current = out + return obs, reward, terminated, truncated, info + + def arrays(self, i: int) -> dict: + return { + f"obs_in{i}": np.stack(self.obs_in) + if self.obs_in + else np.zeros((0, 1), np.float32), + f"action{i}": np.stack(self.action) + if self.action + else np.zeros((0, 1), np.float32), + f"reward{i}": np.asarray(self.reward, dtype=np.float32), + f"terminated{i}": np.asarray(self.terminated, dtype=np.bool_), + f"truncated{i}": np.asarray(self.truncated, dtype=np.bool_), + f"obs_out{i}": np.stack(self.obs_out) + if self.obs_out + else np.zeros((0, 1), np.float32), + } + + +def connect(uri: str, deadline: float): + while True: + try: + return websockets.sync.client.connect( + uri, compression=None, max_size=None, open_timeout=10 + ) + except (OSError, websockets.exceptions.InvalidHandshake): + if time.monotonic() > deadline: + raise + time.sleep(0.1) + + +class Selector: + """Which cells a fault hits: the same ones for every training seed.""" + + def __init__(self, n: int, dose: str) -> None: + self.n = n + self.dose = dose + self.rng = np.random.default_rng(54) + self.one_done = False + self.hit_now = False + self.u = np.ones(n) + + def draw(self) -> None: + self.u = self.rng.random(self.n) # one draw per vector step, always + self.hit_now = False + + def hits(self, step: int, eligible: np.ndarray) -> np.ndarray: + if self.dose == "one": + out = np.zeros(self.n, dtype=np.bool_) + if not self.one_done and step >= ONE_STEP and eligible[0]: + out[0] = True + self.one_done = True + self.hit_now = True + return out + return eligible & (self.u < float(self.dose)) + + +def apply( + op: str, + values: np.ndarray, + hit: np.ndarray, + previous: np.ndarray, + bound: float = 1.0, +) -> np.ndarray: + """Return values with the operator applied in the hit rows.""" + out = values.copy() + if not hit.any(): + return out + if op == "zero": + out[hit] = 0 + elif op == "stale": + out[hit] = previous[hit] + elif op == "swap": + out[hit] = np.roll(values, -1, axis=0)[hit] + elif op == "f16": + out[hit] = values[hit].astype(np.float16).astype(values.dtype) + elif op == "clip": + out[hit] = np.clip(values[hit], -bound / 2, bound / 2) + else: + raise ValueError(op) + return out + + +def changed(new: np.ndarray, old: np.ndarray) -> np.ndarray: + """The rows (envs) in which new differs from old.""" + diff = new != old + return diff.reshape(len(diff), -1).any(axis=1) + + +def main() -> int: + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--host", default="127.0.0.1") + p.add_argument("--port", type=int, default=8854) + p.add_argument("--num-envs", type=int, default=16) + p.add_argument("--seed", type=int, default=0) + p.add_argument("--env-id", default="Pendulum-v1") + p.add_argument("--action-high", type=float, default=2.0) + p.add_argument("--fault", choices=FAULTS, default="none") + p.add_argument("--dose", default="1.0") + p.add_argument("--record", required=True) + p.add_argument("--ledger", required=True) + a = p.parse_args() + + n, fault = a.num_envs, a.fault + field, _, op = fault.partition(":") + dose = "one" if fault in LOUD else a.dose + select = Selector(n, dose) + envs = [LedgerEnv(gym.make(a.env_id)) for _ in range(n)] + obs = np.stack([env.reset(seed=a.seed + i)[0] for i, env in enumerate(envs)]) + obs = obs.astype(np.float32) + indices = np.arange(n, dtype=np.int64) + step_ids = np.zeros(n, dtype=np.int64) + packer = msgpack_numpy.Packer() + steps = 0 + cells = 0 + every = np.ones(n, dtype=np.bool_) + first: list[int] | None = None # the first changed cell, [vector step, env] + + def tally(rows: np.ndarray) -> None: + nonlocal cells, first + if select.hit_now and not rows.any(): + select.one_done = ( + False # "one": that cell's value did not change; try the next + ) + if rows.any(): + cells += int(rows.sum()) + if first is None: + first = [steps, int(np.flatnonzero(rows)[0])] + + # What the environments produced, before any fault. + ep_return = np.zeros(n, dtype=np.float64) + ep_length = np.zeros(n, dtype=np.int64) + episodes = np.zeros(n, dtype=np.int64) + record_path = pathlib.Path(a.record) + record = open(record_path, "w", encoding="utf-8", newline="") + writer = csv.writer(record) + writer.writerow(["step", "env", "episode", "return", "length"]) + + prev_obs = obs.copy() + prev_actions = None + prev_rewards = np.zeros(n, dtype=np.float32) + + def finish(reason: str) -> int: + record.close() + ledger = {} + for i, env in enumerate(envs): + ledger.update(env.arrays(i)) + np.savez_compressed(a.ledger, **ledger) + (record_path.parent / "fault.json").write_text( + json.dumps( + { + "fault": fault, + "dose": dose, + "cells": cells, + "first": first, + "steps": steps, + } + ) + + "\n" + ) + print( + f"closed after {steps} steps: {reason!r}; {cells} cells changed", flush=True + ) + return 0 if reason == STOP_REASON else 1 + + ws = connect(f"ws://{a.host}:{a.port}", time.monotonic() + 120) + with ws: + msgpack_numpy.unpackb(ws.recv()) # the metadata; nothing in it is needed + try: + while True: + select.draw() + sent = obs + if field == "obs": + sent = apply(op, obs, select.hits(steps, every), prev_obs) + tally(changed(sent, obs)) + ws.send( + packer.pack( + { + "message_type": "infer", + "data": observation(sent, fault), + "env_indices": indices, + "step_ids": step_ids.copy(), + } + ) + ) + prev_obs = obs.copy() + reply = msgpack_numpy.unpackb(ws.recv()) + received = np.asarray(reply["data"]["action"])[0] # [H, n, d] -> [n, d] + actions = received + if field == "action": + previous = ( + np.zeros_like(received) + if prev_actions is None + else prev_actions + ) + actions = apply( + op, received, select.hits(steps, every), previous, a.action_high + ) + tally(changed(actions, received)) + prev_actions = received.copy() + skip = np.zeros(n, dtype=np.bool_) + if field == "step": + skip = select.hits(steps, every) + tally(skip) + ended = np.empty_like(obs) + after = np.empty_like(obs) + rewards = np.zeros(n, dtype=np.float32) + terminated = np.zeros(n, dtype=np.bool_) + truncated = np.zeros(n, dtype=np.bool_) + sent_ids = step_ids.copy() + for i, env in enumerate(envs): + if skip[i]: + ended[i] = obs[i] + after[i] = obs[i] + step_ids[i] += 1 + continue + o, r, te, tr, _ = env.step(actions[i]) + ended[i] = o + rewards[i], terminated[i], truncated[i] = r, te, tr + ep_return[i] += float(rewards[i]) + ep_length[i] += 1 + if te or tr: + episodes[i] += 1 + writer.writerow( + [ + steps + 1, + i, + episodes[i], + f"{ep_return[i]:.6f}", + ep_length[i], + ] + ) + ep_return[i] = 0.0 + ep_length[i] = 0 + after[i] = env.reset()[0] + step_ids[i] = 0 + else: + after[i] = o + step_ids[i] += 1 + true_rewards = rewards + ends = terminated | truncated + final = ended + if field == "reward" and op in VALUE_OPS: + rewards = apply( + op, true_rewards, select.hits(steps, every), prev_rewards + ) + tally(changed(rewards, true_rewards)) + elif field == "final-obs": + final = apply(op, ended, select.hits(steps, ends), obs) + tally(changed(final, ended)) + elif fault == "terminated:spurious": + hit = select.hits(steps, ~terminated) + terminated = terminated | hit + tally(hit) + elif fault == "truncated:drop": + hit = select.hits(steps, truncated) + truncated = truncated & ~hit + tally(hit) + elif fault == "truncated:as-term": + hit = select.hits(steps, truncated) + terminated = terminated | hit + truncated = truncated & ~hit + tally(hit) + prev_rewards = true_rewards.copy() + if fault == "delay-1ms": + time.sleep(0.001) + order = indices + fields = { + "obs": observation(final, fault), + "rewards": rewards, + "terminated": terminated, + "truncated": truncated, + "info": {}, + } + if fault in LOUD and select.hits(steps, every)[0]: + tally(indices == 0) + if fault == "indices:reorder": + order = indices[::-1].copy() + fields["obs"] = observation(final[::-1].copy(), fault) + for key in ("rewards", "terminated", "truncated"): + fields[key] = fields[key][::-1].copy() + sent_ids = sent_ids[::-1].copy() + else: + fields["rewards"] = rewards[:-1].copy() + ws.send( + packer.pack( + { + "message_type": "feedback", + "env_indices": order, + "step_ids": sent_ids, + "data": fields, + } + ) + ) + obs = after + steps += 1 + except websockets.exceptions.ConnectionClosed as closed: + return finish(closed.rcvd.reason if closed.rcvd is not None else "") + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/e55-step-ledger/jobs.py b/experiments/e55-step-ledger/jobs.py new file mode 100644 index 0000000..1e38bfb --- /dev/null +++ b/experiments/e55-step-ledger/jobs.py @@ -0,0 +1,41 @@ +"""E55's same-machine runs, one line each: env fault dose seed trace. + + python jobs.py registered > jobs.txt + python jobs.py pilot > jobs.txt + +registered (PROTOCOL.md): Pendulum, seeds 0-2, every run traced and +ledgered: the 3 controls; E54's 21 client faults and 2 log faults at doses +one, 0.01 and 1.0. pilot: the same at seed 9. The runs across machines are +cross.sh's. +""" + +from __future__ import annotations + +import sys + +from faulty_client import CONTROLS, SILENT + +LOG = ("log:drop-first", "log:short") +DOSES = ("one", "0.01", "1.0") + + +def pendulum(seed: int) -> list[str]: + jobs = [f"pendulum {c} 1.0 {seed} trace" for c in CONTROLS] + jobs += [f"pendulum {f} {d} {seed} trace" for f in SILENT + LOG for d in DOSES] + return jobs + + +def main() -> int: + which = sys.argv[1] + if which == "registered": + jobs = [j for seed in (0, 1, 2) for j in pendulum(seed)] + elif which == "pilot": + jobs = pendulum(9) + else: + raise SystemExit(f"unknown: {which}") + print("\n".join(jobs)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/e55-step-ledger/ledger.py b/experiments/e55-step-ledger/ledger.py new file mode 100644 index 0000000..b3343c3 --- /dev/null +++ b/experiments/e55-step-ledger/ledger.py @@ -0,0 +1,170 @@ +"""E55: the trainer's view of each step against the environment's own ledger. + + python ledger.py results # writes results/ledger.csv + +For each run with both trace.npz (what the trainer sent and received, step by +step, from train.py --trace) and ledger.npz (what each environment took and +gave, from faulty_client.py --ledger), and for each env, the two step +sequences are compared in order, value for value: +- obs: the observation the trainer acted on, against the one the environment + had given before that step; +- action: the action the trainer sent, against the one the environment was + handed; +- reward: the reward the trainer got, against the one the environment + returned; +- end: whether the trainer saw the episode end, against terminated or + truncated; +- limit: whether the trainer saw a time limit (SB3's TimeLimit.truncated), + against truncated and not terminated; +- final: at an episode end, the observation the trainer got as the final one, + against the one the environment returned; +- steps: the number of steps on each side. +No fault-free run is needed, and the two sides need not be on one machine. + +A run is caught if anything differs. The first difference is (step, env, +field), the lowest step first, then the lowest env, then the order above. It +is right if that step and env are the fault's first changed cell +(fault.json), and the field is the one the fault touches. +""" + +from __future__ import annotations + +import csv +import json +import pathlib +import sys + +import numpy as np + +FIELDS = ("obs", "action", "reward", "end", "limit", "final", "steps") +EXPECTED = { + "obs": ("obs",), + "action": ("action",), + "reward": ("reward",), + "final-obs": ("final",), + "terminated:spurious": ("end", "limit"), + "truncated:drop": ("end",), + "truncated:as-term": ("limit",), + "step:fill": FIELDS, +} + + +def load(path: pathlib.Path) -> dict: + with np.load(path) as z: # an NpzFile decompresses on every access + return {k: z[k] for k in z.files} + + +def differences(trace: dict, ledger: dict) -> tuple[int, tuple[int, int, str] | None]: + """(cells that differ, first difference as (step, env, field)).""" + steps, n = trace["rewards"].shape + acted = np.concatenate([trace["first_obs"][None], trace["nexts"][:-1]]) + count, first = 0, None + for i in range(n): + k = len(ledger[f"reward{i}"]) + m = min(k, steps) + if m == 0: # one side has no steps at all (every step skipped, say) + count += abs(k - steps) + if k != steps and (first is None or (0, i) < (first[0], first[1])): + first = (0, i, "steps") + continue + te, tr = ledger[f"terminated{i}"][:m], ledger[f"truncated{i}"][:m] + ends = trace["ends"][:m, i] + per_field = { + "obs": (acted[:m, i] != ledger[f"obs_in{i}"][:m]) + .reshape(m, -1) + .any(axis=1), + "action": (trace["actions"][:m, i] != ledger[f"action{i}"][:m]) + .reshape(m, -1) + .any(axis=1), + "reward": trace["rewards"][:m, i] != ledger[f"reward{i}"][:m], + "end": ends != (te | tr), + "limit": trace["truncs"][:m, i] != (tr & ~te), + "final": ends + & (trace["finals"][:m, i] != ledger[f"obs_out{i}"][:m]) + .reshape(m, -1) + .any(axis=1), + } + bad = np.zeros(m, dtype=np.bool_) + for f in FIELDS[:-1]: + bad |= per_field[f] + count += int(bad.sum()) + abs(k - steps) + rows = np.flatnonzero(bad) + if len(rows): + t = int(rows[0]) + field = next(f for f in FIELDS[:-1] if per_field[f][t]) + here = (t, i, field) + elif k != steps: + here = (m, i, "steps") + else: + continue + if first is None or (here[0], here[1]) < (first[0], first[1]): + first = here + return count, first + + +def expected(fault: str) -> tuple[str, ...]: + return EXPECTED.get(fault, EXPECTED.get(fault.partition(":")[0], ())) + + +def main() -> int: + root = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("results") + rows = [] + for trace_path in sorted(root.glob("**/seed*/trace.npz")): + run = trace_path.parent + ledger_path = run / "ledger.npz" + if not ledger_path.exists(): + continue + fault = run.parent.parent.name.replace("__", ":") + info = ( + json.loads((run / "fault.json").read_text()) + if (run / "fault.json").exists() + else {} + ) + result = json.loads((run / "result.json").read_text()) + cells = ( + result.get("log_cells") + if fault.startswith("log:") + else info.get("cells", 0) + ) + count, first = differences(load(trace_path), load(ledger_path)) + injected = info.get("first") + if ( + fault.startswith("log:") + or fault in ("none", "delay-1ms", "wire-float64") + or not cells + ): + right = first is None # nothing that crossed should differ + else: + right = ( + first is not None + and injected is not None + and (first[0], first[1]) == (injected[0], injected[1]) + and first[2] in expected(fault) + ) + rows.append( + dict( + run=str(run.relative_to(root)).replace("\\", "/"), + fault=fault, + dose=run.parent.name, + seed=run.name.removeprefix("seed"), + cells=cells, + caught=int(first is not None), + differing=count, + injected="" if injected is None else f"{injected[0]}/{injected[1]}", + found="" if first is None else f"{first[0]}/{first[1]} {first[2]}", + right=int(right), + ) + ) + with open(root / "ledger.csv", "w", encoding="utf-8", newline="") as f: + w = csv.DictWriter(f, fieldnames=list(rows[0])) + w.writeheader() + w.writerows(rows) + wrong = [r for r in rows if not r["right"]] + print(f"{len(rows)} runs compared; right: {len(rows) - len(wrong)}") + for r in wrong: + print(" not right:", r) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/e55-step-ledger/results/pilot/cross-laptop-python.txt b/experiments/e55-step-ledger/results/pilot/cross-laptop-python.txt new file mode 100644 index 0000000..0ea9946 --- /dev/null +++ b/experiments/e55-step-ledger/results/pilot/cross-laptop-python.txt @@ -0,0 +1,2 @@ +Python 3.11.14 +numpy 2.3.2 gymnasium 1.3.0 diff --git a/experiments/e55-step-ledger/results/pilot/cross-ledger.csv b/experiments/e55-step-ledger/results/pilot/cross-ledger.csv new file mode 100644 index 0000000..33c1812 --- /dev/null +++ b/experiments/e55-step-ledger/results/pilot/cross-ledger.csv @@ -0,0 +1,8 @@ +run,fault,dose,seed,cells,caught,differing,injected,found,right +pendulum/action__zero/one/seed9,action:zero,one,9,1,1,1,3249/0,3249/0 action,1 +pendulum/log__short/one/seed9,log:short,one,9,1,0,0,,,1 +pendulum/none/1.0/seed9,none,1.0,9,0,0,0,,,1 +pendulum/obs__stale/one/seed9,obs:stale,one,9,1,1,1,3249/0,3249/0 obs,1 +pendulum/reward__stale/one/seed9,reward:stale,one,9,1,1,1,3249/0,3249/0 reward,1 +pendulum/step__fill/one/seed9,step:fill,one,9,1,1,3151,3249/0,3249/0 reward,1 +pendulum/truncated__as-term/one/seed9,truncated:as-term,one,9,1,1,1,3399/0,3399/0 limit,1 diff --git a/experiments/e55-step-ledger/results/pilot/same-ledger.csv b/experiments/e55-step-ledger/results/pilot/same-ledger.csv new file mode 100644 index 0000000..de460fb --- /dev/null +++ b/experiments/e55-step-ledger/results/pilot/same-ledger.csv @@ -0,0 +1,73 @@ +run,fault,dose,seed,cells,caught,differing,injected,found,right +pendulum/action__clip/0.01/seed9,action:clip,0.01,9,570,1,570,5/7,5/7 action,1 +pendulum/action__clip/1.0/seed9,action:clip,1.0,9,65640,1,65640,0/2,0/2 action,1 +pendulum/action__clip/one/seed9,action:clip,one,9,1,1,1,3256/0,3256/0 action,1 +pendulum/action__f16/0.01/seed9,action:f16,0.01,9,709,1,709,50/10,50/10 action,1 +pendulum/action__f16/1.0/seed9,action:f16,1.0,9,64943,1,64943,0/0,0/0 action,1 +pendulum/action__f16/one/seed9,action:f16,one,9,1,1,1,3249/0,3249/0 action,1 +pendulum/action__stale/0.01/seed9,action:stale,0.01,9,784,1,784,50/10,50/10 action,1 +pendulum/action__stale/1.0/seed9,action:stale,1.0,9,75433,1,75433,0/0,0/0 action,1 +pendulum/action__stale/one/seed9,action:stale,one,9,1,1,1,3249/0,3249/0 action,1 +pendulum/action__swap/0.01/seed9,action:swap,0.01,9,969,1,969,5/7,5/7 action,1 +pendulum/action__swap/1.0/seed9,action:swap,1.0,9,87162,1,87162,0/0,0/0 action,1 +pendulum/action__swap/one/seed9,action:swap,one,9,1,1,1,3249/0,3249/0 action,1 +pendulum/action__zero/0.01/seed9,action:zero,0.01,9,1068,1,1068,5/7,5/7 action,1 +pendulum/action__zero/1.0/seed9,action:zero,1.0,9,102400,1,102400,0/0,0/0 action,1 +pendulum/action__zero/one/seed9,action:zero,one,9,1,1,1,3249/0,3249/0 action,1 +pendulum/delay-1ms/1.0/seed9,delay-1ms,1.0,9,0,0,0,,,1 +pendulum/final-obs__f16/0.01/seed9,final-obs:f16,0.01,9,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__f16/1.0/seed9,final-obs:f16,1.0,9,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__f16/one/seed9,final-obs:f16,one,9,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__stale/0.01/seed9,final-obs:stale,0.01,9,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__stale/1.0/seed9,final-obs:stale,1.0,9,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__stale/one/seed9,final-obs:stale,one,9,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__swap/0.01/seed9,final-obs:swap,0.01,9,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__swap/1.0/seed9,final-obs:swap,1.0,9,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__swap/one/seed9,final-obs:swap,one,9,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__zero/0.01/seed9,final-obs:zero,0.01,9,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__zero/1.0/seed9,final-obs:zero,1.0,9,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__zero/one/seed9,final-obs:zero,one,9,1,1,1,3399/0,3399/0 final,1 +pendulum/log__drop-first/0.01/seed9,log:drop-first,0.01,9,2,0,0,,,1 +pendulum/log__drop-first/1.0/seed9,log:drop-first,1.0,9,512,0,0,,,1 +pendulum/log__drop-first/one/seed9,log:drop-first,one,9,1,0,0,,,1 +pendulum/log__short/0.01/seed9,log:short,0.01,9,2,0,0,,,1 +pendulum/log__short/1.0/seed9,log:short,1.0,9,512,0,0,,,1 +pendulum/log__short/one/seed9,log:short,one,9,1,0,0,,,1 +pendulum/none/1.0/seed9,none,1.0,9,0,0,0,,,1 +pendulum/obs__f16/0.01/seed9,obs:f16,0.01,9,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__f16/1.0/seed9,obs:f16,1.0,9,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__f16/one/seed9,obs:f16,one,9,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__stale/0.01/seed9,obs:stale,0.01,9,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__stale/1.0/seed9,obs:stale,1.0,9,102400,1,102384,1/0,1/0 obs,1 +pendulum/obs__stale/one/seed9,obs:stale,one,9,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__swap/0.01/seed9,obs:swap,0.01,9,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__swap/1.0/seed9,obs:swap,1.0,9,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__swap/one/seed9,obs:swap,one,9,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__zero/0.01/seed9,obs:zero,0.01,9,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__zero/1.0/seed9,obs:zero,1.0,9,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__zero/one/seed9,obs:zero,one,9,1,1,1,3249/0,3249/0 obs,1 +pendulum/reward__f16/0.01/seed9,reward:f16,0.01,9,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__f16/1.0/seed9,reward:f16,1.0,9,102388,1,102388,0/0,0/0 reward,1 +pendulum/reward__f16/one/seed9,reward:f16,one,9,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__stale/0.01/seed9,reward:stale,0.01,9,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__stale/1.0/seed9,reward:stale,1.0,9,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__stale/one/seed9,reward:stale,one,9,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__swap/0.01/seed9,reward:swap,0.01,9,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__swap/1.0/seed9,reward:swap,1.0,9,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__swap/one/seed9,reward:swap,one,9,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__zero/0.01/seed9,reward:zero,0.01,9,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__zero/1.0/seed9,reward:zero,1.0,9,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__zero/one/seed9,reward:zero,one,9,1,1,1,3249/0,3249/0 reward,1 +pendulum/step__fill/0.01/seed9,step:fill,0.01,9,1068,1,100458,5/7,5/7 reward,1 +pendulum/step__fill/1.0/seed9,step:fill,1.0,9,102400,1,102400,0/0,0/0 steps,1 +pendulum/step__fill/one/seed9,step:fill,one,9,1,1,3151,3249/0,3249/0 reward,1 +pendulum/terminated__spurious/0.01/seed9,terminated:spurious,0.01,9,1068,1,1068,5/7,5/7 end,1 +pendulum/terminated__spurious/1.0/seed9,terminated:spurious,1.0,9,102400,1,102400,0/0,0/0 end,1 +pendulum/terminated__spurious/one/seed9,terminated:spurious,one,9,1,1,1,3249/0,3249/0 end,1 +pendulum/truncated__as-term/0.01/seed9,truncated:as-term,0.01,9,9,1,9,199/12,199/12 limit,1 +pendulum/truncated__as-term/1.0/seed9,truncated:as-term,1.0,9,512,1,512,199/0,199/0 limit,1 +pendulum/truncated__as-term/one/seed9,truncated:as-term,one,9,1,1,1,3399/0,3399/0 limit,1 +pendulum/truncated__drop/0.01/seed9,truncated:drop,0.01,9,9,1,9,199/12,199/12 end,1 +pendulum/truncated__drop/1.0/seed9,truncated:drop,1.0,9,512,1,512,199/0,199/0 end,1 +pendulum/truncated__drop/one/seed9,truncated:drop,one,9,1,1,1,3399/0,3399/0 end,1 +pendulum/wire-float64/1.0/seed9,wire-float64,1.0,9,0,0,0,,,1 diff --git a/experiments/e55-step-ledger/results/pilot/same-summary.txt b/experiments/e55-step-ledger/results/pilot/same-summary.txt new file mode 100644 index 0000000..df31367 --- /dev/null +++ b/experiments/e55-step-ledger/results/pilot/same-summary.txt @@ -0,0 +1,87 @@ +env fault dose cells raises rule strict weights record bridge +pendulum none 1.0 0 0/1 0/1 - 0/1 0/1 0/1 +pendulum delay-1ms 1.0 0 0/1 0/1 - 0/1 0/1 0/1 +pendulum wire-float64 1.0 0 0/1 0/1 - 0/1 0/1 0/1 +pendulum obs:zero 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:zero 1.0 102416 0/1 1/1 - 1/1 0/1 0/1 +pendulum obs:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:stale 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:stale 1.0 102400 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:swap 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:swap 1.0 102416 0/1 1/1 - 1/1 0/1 0/1 +pendulum obs:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:f16 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:f16 1.0 102416 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:zero 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:zero 1.0 102400 0/1 1/1 - 1/1 0/1 0/1 +pendulum action:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:stale 0.01 784 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:stale 1.0 75433 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:swap 0.01 969 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:swap 1.0 87162 0/1 1/1 - 1/1 0/1 0/1 +pendulum action:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:f16 0.01 709 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:f16 1.0 64943 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:clip 0.01 570 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:clip 1.0 65640 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:clip one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:zero 0.01 1068 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:zero 1.0 102400 0/1 1/1 - 1/1 1/1 0/1 +pendulum reward:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:stale 0.01 1068 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:stale 1.0 102400 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:swap 0.01 1068 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:swap 1.0 102400 0/1 1/1 - 1/1 1/1 0/1 +pendulum reward:swap one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:f16 0.01 1068 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:f16 1.0 102388 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:zero 0.01 9 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:zero 1.0 512 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:stale 0.01 9 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:stale 1.0 512 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:swap 0.01 9 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:swap 1.0 512 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:f16 0.01 9 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:f16 1.0 512 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum terminated:spurious 0.01 1068 0/1 1/1 - 1/1 1/1 0/1 +pendulum terminated:spurious 1.0 102400 0/1 1/1 - 1/1 1/1 0/1 +pendulum terminated:spurious one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum truncated:drop 0.01 9 0/1 0/1 - 1/1 1/1 0/1 +pendulum truncated:drop 1.0 512 0/1 1/1 - 1/1 1/1 0/1 +pendulum truncated:drop one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum truncated:as-term 0.01 9 0/1 0/1 - 1/1 0/1 0/1 +pendulum truncated:as-term 1.0 512 0/1 0/1 - 1/1 0/1 0/1 +pendulum truncated:as-term one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum step:fill 0.01 1068 0/1 0/1 - 1/1 1/1 0/1 +pendulum step:fill 1.0 102400 0/1 1/1 - 1/1 0/1 0/1 +pendulum step:fill one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum log:drop-first 0.01 2 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:drop-first 1.0 512 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:drop-first one 1 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:short 0.01 2 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:short 1.0 512 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:short one 1 0/1 0/1 - 0/1 1/1 1/1 + +share of runs caught, by dose (runs with a changed cell; either = weights or record) + pendulum client one n= 21 raises 0.0 rule 0.0 strict weights 1.0 record 0.19 bridge 0.0 either 1.0 + pendulum client 0.01 n= 21 raises 0.0 rule 0.048 strict weights 1.0 record 0.286 bridge 0.0 either 1.0 + pendulum client 1.0 n= 21 raises 0.0 rule 0.429 strict weights 1.0 record 0.238 bridge 0.0 either 1.0 + pendulum log one n= 2 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum log 0.01 n= 2 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum log 1.0 n= 2 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum all one n= 23 raises 0.0 rule 0.0 strict weights 0.913 record 0.261 bridge 0.087 either 1.0 + pendulum all 0.01 n= 23 raises 0.0 rule 0.043 strict weights 0.913 record 0.348 bridge 0.087 either 1.0 + pendulum all 1.0 n= 23 raises 0.0 rule 0.391 strict weights 0.913 record 0.304 bridge 0.087 either 1.0 + +pendulum none at seed 9: 3721266c, E50's 3721266c: same +incomplete without an error: none diff --git a/experiments/e55-step-ledger/run.sh b/experiments/e55-step-ledger/run.sh new file mode 100644 index 0000000..95f6ab7 --- /dev/null +++ b/experiments/e55-step-ledger/run.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# E55's same-machine runs on guangzhao, W at a time, each worker on its own port. +# bash run.sh results registered [W] # PROTOCOL.md; W defaults to 10 +# bash run.sh pilot pilot [W] +# Writes DIR////seed/, with train.log in it. +set -uo pipefail +export PATH="$HOME/.local/bin:$PATH" OMP_NUM_THREADS=1 +PY="$HOME/zuogou/plugrl/bridges-venv/bin/python" +cd "$(dirname "$0")" +DIR="${1:?results dir}"; WHICH="${2:?registered or pilot}"; W="${3:-10}" +mkdir -p "$DIR" +"$PY" jobs.py "$WHICH" > "$DIR/jobs.txt" +uptime | tee "$DIR/load.txt" +(cd "$HOME/zuogou/plugrl/plugrl-bridges" && find src -name "*.py" | sort | xargs sha256sum) > "$DIR/bridges-src.sha256" +sha256sum train.py faulty_client.py jobs.py > "$DIR/e55-src.sha256" +echo "$(wc -l < "$DIR/jobs.txt") runs, $W at a time" + +worker() { + local w=$1 port=$((8870 + $1)) n=0 + # Every W-th job, starting at the w-th. + awk -v w="$w" -v W="$W" 'NR % W == w' "$DIR/jobs.txt" | while read -r env fault dose seed trace; do + # A process left on the port would take the next run's client (E53). + if ! "$PY" -c "import socket,sys; s=socket.socket(); sys.exit(0 if s.connect_ex(('127.0.0.1',$port)) else 1)"; then + echo "worker $w: port $port in use; stopping"; return 1 + fi + out="$DIR/$env/${fault//:/__}/$dose/seed$seed" + mkdir -p "$out" + flag=""; [ "$trace" = trace ] && flag="--trace" + "$PY" train.py --env "$env" --fault "$fault" --dose "$dose" --seed "$seed" \ + --out "$out" --port "$port" $flag > "$out/train.log" 2>&1 || echo "worker $w: train.py exited $? on $out" + n=$((n + 1)) + done + echo "worker $w done" +} + +for w in $(seq 0 $((W - 1))); do + worker "$w" & +done +wait +uptime | tee -a "$DIR/load.txt" +echo E55_DONE diff --git a/experiments/e55-step-ledger/summarise.py b/experiments/e55-step-ledger/summarise.py new file mode 100644 index 0000000..140d949 --- /dev/null +++ b/experiments/e55-step-ledger/summarise.py @@ -0,0 +1,268 @@ +"""E54: what each check says about each fault, at each dose. + + python summarise.py results # registered: writes runs.csv, by_dose.csv + python summarise.py pilot + +Runs are DIR////seed/. For each, six checks, +each "catches" the fault or not: +- raises: the run stopped on an error (the bridge rejected a message). +- rule: the trainer's log (monitor.csv) fails the env's status rule, E44's for + Pendulum and E43's for HalfCheetah. Batches are 16 consecutive episodes. + Pendulum: batches 20 to the last at least 500 above batches 1-2. + HalfCheetah: batches 21-25 at least 200 above batch 1. +- strict: the mean of those last batches, in the trainer's log, is more than + 3 standard deviations from the mean of the fault-free runs at seeds 10-19. +- weights: the final weights' SHA-256 differs from the fault-free run's at the + same seed, on the same machine. +- record: the trainer's log disagrees with the client's record of what the + environments produced (env_record.csv, in order of the step each episode + ended on, then env): returns to 1e-4 relative plus 0.01, lengths exactly. +- bridge: the trainer's log disagrees with the bridge's own log + (episodes.csv), which counts where the rewards arrive, on the trainer's side + of the wire. +A fault whose run changed no cell (fault.json; for the log faults, +result.json's log_cells) is reported, and left out of the shares caught. +""" + +from __future__ import annotations + +import csv +import json +import pathlib +import statistics +import sys +from collections import defaultdict + +HERE = pathlib.Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +from faulty_client import CONTROLS, LOUD, SILENT # noqa: E402 + +LOG = ("log:drop-first", "log:short") +FAULTS = CONTROLS + SILENT + LOG + LOUD +CHECKS = ("raises", "rule", "strict", "weights", "record", "bridge") +STEPS = {"pendulum": 102_400, "halfcheetah": 409_600} +# E50's fault-free bridge runs on guangzhao (seed 9: E50's pilot). +E50_WEIGHTS = { + ("pendulum", 0): "ec5b8226", + ("pendulum", 1): "062e92e3", + ("pendulum", 2): "3a8d968f", + ("pendulum", 9): "3721266c", + ("halfcheetah", 0): "8261c03a", + ("halfcheetah", 1): "86564694", + ("halfcheetah", 2): "65cc8843", + ("halfcheetah", 9): "0260ca9d", +} +BAND_SEEDS = range(10, 20) + + +def read_csv(path: pathlib.Path, skip_header: bool = False) -> list[dict]: + with open(path, encoding="utf-8", newline="") as f: + if skip_header: + next(f) # VecMonitor's JSON header + return list(csv.DictReader(f)) + + +def monitor(run: pathlib.Path) -> list[tuple[float, int]]: + return [(float(r["r"]), int(r["l"])) for r in read_csv(run / "monitor.csv", True)] + + +def ordered(rows: list[dict], key: str) -> list[tuple[float, int]]: + rows.sort(key=lambda r: (int(r["step"]), int(r[key]))) + return [(float(r["return"]), int(r["length"])) for r in rows] + + +def agree(log, truth) -> bool: + return len(log) == len(truth) and all( + abs(r - t) <= 1e-4 * max(1.0, abs(t)) + 0.01 and n == m + for (r, n), (t, m) in zip(log, truth) + ) + + +def window(env: str, episodes) -> tuple[float, float] | None: + """(gain, last-window mean) by the env's status rule, or None if too short.""" + returns = [r for r, _ in episodes] + batches = [ + statistics.mean(returns[i : i + 16]) for i in range(0, len(returns) - 15, 16) + ] + if env == "pendulum": + if len(batches) < 20: + return None + first, last = statistics.mean(batches[0:2]), statistics.mean(batches[19:]) + else: + if len(batches) < 25: + return None + first, last = batches[0], statistics.mean(batches[20:25]) + return last - first, last + + +def bar(env: str) -> float: + return 500.0 if env == "pendulum" else 200.0 + + +def runs(root: pathlib.Path): + for res in sorted(root.glob("*/*/*/seed*/result.json")): + run = res.parent + env = run.parent.parent.parent.name + fault = run.parent.parent.name.replace("__", ":") + yield env, fault, run.parent.name, int(run.name.removeprefix("seed")), run + + +def main() -> int: + root = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else HERE / "results" + table = {} + for env, fault, dose, seed, run in runs(root): + res = json.loads((run / "result.json").read_text()) + info = run / "fault.json" + cells = json.loads(info.read_text())["cells"] if info.exists() else None + if fault in LOG: + cells = res.get("log_cells") + if fault in CONTROLS: + cells = 0 + log = monitor(run) + w = window(env, log) + table[env, fault, dose, seed] = dict( + raised=res.get("raised", ""), + complete=res["steps"] == STEPS[env] and res.get("client_rc") == 0, + sha=res["weights_sha256"], + gain=None if w is None else w[0], + last=None if w is None else w[1], + record=agree(log, ordered(read_csv(run / "env_record.csv"), "env")), + bridge=agree(log, ordered(read_csv(run / "episodes.csv"), "slot")), + cells=cells, + episodes=len(log), + learn_s=res["learn_s"], + ) + + rows = [] + for (env, fault, dose, seed), t in sorted(table.items()): + clean = table.get((env, "none", "1.0", seed)) + band = [table[env, "none", "1.0", s]["last"] for s in BAND_SEEDS + if (env, "none", "1.0", s) in table] # fmt: skip + mu = statistics.mean(band) if len(band) >= 2 else None + sd = statistics.stdev(band) if len(band) >= 2 else None + raised = bool(t["raised"]) + caught = dict( + raises=raised, + rule=not raised and (t["gain"] is None or t["gain"] < bar(env)), + strict=None + if mu is None or raised + else (t["last"] is None or abs(t["last"] - mu) > 3 * sd), + weights=None if clean is None or raised else t["sha"] != clean["sha"], + record=not raised and not t["record"], + bridge=not raised and not t["bridge"], + ) + rows.append( + dict( + env=env, + fault=fault, + dose=dose, + seed=seed, + cells=t["cells"], + **{k: "" if v is None else int(v) for k, v in caught.items()}, + gain="" if t["gain"] is None else round(t["gain"], 1), + last="" if t["last"] is None else round(t["last"], 1), + episodes=t["episodes"], + sha=t["sha"][:8], + learn_s=t["learn_s"], + raised=t["raised"][:80], + complete=int(t["complete"]), + ) + ) + with open(root / "runs.csv", "w", encoding="utf-8", newline="") as f: + out = csv.DictWriter(f, fieldnames=list(rows[0])) + out.writeheader() + out.writerows(rows) + + # Per fault and dose: how many of the seeds each check caught. + groups = defaultdict(list) + for r in rows: + if r["seed"] in BAND_SEEDS: + continue + groups[r["env"], r["fault"], r["dose"]].append(r) + print( + f"{'env':11s} {'fault':20s} {'dose':6s} cells " + + " ".join(f"{c:>7s}" for c in CHECKS) + ) + for (env, fault, dose), rs in sorted( + groups.items(), key=lambda g: (g[0][0], FAULTS.index(g[0][1]), g[0][2]) + ): + cells = "/".join(str(r["cells"]) for r in rs) + counts = [] + for c in CHECKS: + vals = [r[c] for r in rs if r[c] != ""] + counts.append(f"{sum(vals)}/{len(vals)}" if vals else "-") + print( + f"{env:11s} {fault:20s} {dose:6s} {cells:>5s} " + + " ".join(f"{x:>7s}" for x in counts) + ) + + # The figure: per env, dose and kind of fault, the share of runs with a + # changed cell that each check caught; "either" is weights or record. + kinds = {"client": SILENT, "log": LOG, "all": SILENT + LOG} + shares = [] + for env in ("pendulum", "halfcheetah"): + for kind, members in kinds.items(): + for dose in ("one", "0.001", "0.01", "0.1", "1.0"): + rs = [r for r in rows if r["env"] == env and r["dose"] == dose + and r["fault"] in members and r["seed"] not in BAND_SEEDS + and r["cells"] not in (0, None)] # fmt: skip + if not rs: + continue + line = dict(env=env, kind=kind, dose=dose, runs=len(rs)) + for c in CHECKS: + vals = [r[c] for r in rs if r[c] != ""] + line[c] = round(sum(vals) / len(vals), 3) if vals else "" + line["either"] = round( + sum(r["weights"] or r["record"] for r in rs) / len(rs), 3 + ) + shares.append(line) + with open(root / "by_dose.csv", "w", encoding="utf-8", newline="") as f: + out = csv.DictWriter( + f, fieldnames=["env", "kind", "dose", "runs", *CHECKS, "either"] + ) + out.writeheader() + out.writerows(shares) + print() + print( + "share of runs caught, by dose (runs with a changed cell; either = weights or record)" + ) + for s in shares: + print( + f" {s['env']:11s} {s['kind']:6s} {s['dose']:6s} n={s['runs']:3d} " + + " ".join(f"{c} {s[c]}" for c in (*CHECKS, "either")) + ) + + print() + for (env, seed), want in sorted(E50_WEIGHTS.items()): + t = table.get((env, "none", "1.0", seed)) + if t is not None: + print( + f"{env} none at seed {seed}: {t['sha'][:8]}, E50's {want}: " + f"{'same' if t['sha'].startswith(want) else 'DIFFERENT'}" + ) + for env in ("pendulum", "halfcheetah"): + band = [table[env, "none", "1.0", s]["last"] for s in BAND_SEEDS + if (env, "none", "1.0", s) in table] # fmt: skip + if len(band) >= 2: + print( + f"{env} fault-free band, seeds 10-19: mean {statistics.mean(band):.1f}, " + f"sd {statistics.stdev(band):.1f}, min {min(band):.1f}, max {max(band):.1f}" + ) + if len(band) >= 3: + # The strict check's false alarms: each fault-free seed judged by + # the band of the other nine. + alarms = 0 + for i, x in enumerate(band): + rest = band[:i] + band[i + 1 :] + alarms += abs(x - statistics.mean(rest)) > 3 * statistics.stdev(rest) + print( + f"{env} strict check on fault-free seeds 10-19, each against the other " + f"nine: {alarms} of {len(band)} flagged" + ) + incomplete = [k for k, t in table.items() if not t["complete"] and not t["raised"]] + print("incomplete without an error:", incomplete or "none") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/e55-step-ledger/train.py b/experiments/e55-step-ledger/train.py new file mode 100644 index 0000000..6af216d --- /dev/null +++ b/experiments/e55-step-ledger/train.py @@ -0,0 +1,285 @@ +"""E55: E54's train.py, with the client's step ledger, and a client elsewhere. + +Two changes from E54's: +- the client is also given --ledger, and writes ledger.npz beside the run; +- with --external-client, no client is started here: the bridge listens on + every address, and a client started on another machine (cross.sh) connects + to it. The run's client_rc is then the other machine's to record. +Run it with --trace: ledger.py compares trace.npz, what the trainer sent and +received, with ledger.npz, what the environments took and gave. + +E54's docstring: + +E54: SB3's PPO behind the bridge, with one fault at the boundary. + + python train.py --env pendulum --fault reward:stale --dose 0.01 --seed 0 \ + --out runs/... [--port 8854] [--trace] + +E50's bridge arm, unchanged but for the fault: 16 environments in +faulty_client.py, another process, on one connection, behind plugrl-bridges' +PlugRLVecEnv; then VecMonitor, then PPO, one torch thread, CPU. +- pendulum: Pendulum-v1, 102,400 steps, rl-baselines3-zoo's settings, E50's. +- halfcheetah: HalfCheetah-v5, 409,600 steps, SB3's defaults, E50's. + +Every fault but two is the client's (faulty_client.py lists them). The two +here are in the trainer's log, and leave what PPO gets as it came: +- log:drop-first: VecMonitor's logged return leaves out the episode's first + reward (the kind of fault E51 found in Gymnasium's RecordEpisodeStatistics); +- log:short: VecMonitor's logged length is one step short (E51's other half). +Their doses count episodes: "one" is the 256th logged, a number p each with +probability p, from a generator seeded 54. + +With --trace, a pass-through wrapper between the bridge and VecMonitor keeps +what crossed the wire as the trainer saw it, step by step: the actions sent, +and the rewards, episode ends, final observations and next observations +received. trace.npz holds them, for localise.py. + +The run directory gets result.json (the final weights' SHA-256, the time +model.learn() took, and the error if the run raised one), monitor.csv (the +trainer's log), episodes.csv (the bridge's log, counted where the rewards +arrive on the trainer's side of the wire), env_record.csv and fault.json (the +client's), client.log, model.zip (the final policy, saved after its hash is +taken, for rendering), and trace.npz with --trace. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import pathlib +import subprocess +import sys +import time + +import gymnasium as gym +import numpy as np +import torch +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import VecEnvWrapper, VecMonitor + +HERE = pathlib.Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +from faulty_client import FAULTS as CLIENT_FAULTS # noqa: E402 (E55's copy) + +NUM_ENVS = 16 +ENVS = { + "pendulum": dict( + id="Pendulum-v1", + total=102_400, + action=(1, 2.0), + # plugrl-bridges examples/sb3/ppo.py, preset "pendulum"; E50's. + ppo=dict( + n_steps=256, + gamma=0.9, + gae_lambda=0.95, + n_epochs=10, + ent_coef=0.0, + learning_rate=1e-3, + clip_range=0.2, + use_sde=True, + sde_sample_freq=4, + ), + ), + "halfcheetah": dict( + id="HalfCheetah-v5", + total=409_600, + action=(6, 1.0), + ppo=dict(n_steps=256), + ), +} +LOG_FAULTS = ("log:drop-first", "log:short") +FAULTS = CLIENT_FAULTS + LOG_FAULTS + + +class FaultyLogMonitor(VecMonitor): + """VecMonitor with one fault in the episodes it logs; PPO's data is untouched. + + step_wait is SB3 2.9.0's VecMonitor.step_wait, but for the two marked lines. + """ + + def __init__(self, venv, filename: str, fault: str, dose: str) -> None: + super().__init__(venv, filename=filename) + self.fault, self.dose = fault, dose + self.rng = np.random.default_rng(54) + self.first_reward = np.zeros(self.num_envs, dtype=np.float32) + self.logged = 0 + self.cells = 0 + + def _hit(self) -> bool: + k, u = self.logged, self.rng.random() + self.logged += 1 + return k == 255 if self.dose == "one" else u < float(self.dose) + + def step_wait(self): + starting = self.episode_lengths == 0 + obs, rewards, dones, infos = self.venv.step_wait() + self.first_reward[starting] = rewards[starting] + self.episode_returns += rewards + self.episode_lengths += 1 + new_infos = list(infos[:]) + for i in range(len(dones)): + if dones[i]: + info = infos[i].copy() + episode_return = self.episode_returns[i] + episode_length = self.episode_lengths[i] + if self._hit(): # the fault + self.cells += 1 + if self.fault == "log:drop-first": + episode_return = episode_return - self.first_reward[i] + else: + episode_length = episode_length - 1 + episode_info = { + "r": episode_return, + "l": episode_length, + "t": round(time.time() - self.t_start, 6), + } + for key in self.info_keywords: + episode_info[key] = info[key] + info["episode"] = episode_info + self.episode_count += 1 + self.episode_returns[i] = 0 + self.episode_lengths[i] = 0 + if self.results_writer: + self.results_writer.write_row(episode_info) + new_infos[i] = info + return obs, rewards, dones, new_infos + + +class WireTrace(VecEnvWrapper): + """What crossed the wire, as the trainer saw it; passes everything through.""" + + def __init__(self, venv) -> None: + super().__init__(venv) + self.actions, self.rewards, self.ends, self.truncs = [], [], [], [] + self.finals, self.nexts = [], [] + self.first_obs = None + + def reset(self): + obs = self.venv.reset() + if self.first_obs is None: + self.first_obs = np.array(obs, copy=True) + return obs + + def step_async(self, actions) -> None: + self.actions.append(np.array(actions, dtype=np.float32, copy=True)) + self.venv.step_async(actions) + + def step_wait(self): + obs, rewards, dones, infos = self.venv.step_wait() + final = np.zeros_like(obs) + trunc = np.zeros(len(dones), dtype=np.bool_) + for i in np.flatnonzero(dones): + final[i] = infos[i]["terminal_observation"] + trunc[i] = infos[i]["TimeLimit.truncated"] + self.rewards.append(np.array(rewards, copy=True)) + self.ends.append(np.array(dones, copy=True)) + self.truncs.append(trunc) + self.finals.append(final) + self.nexts.append(np.array(obs, copy=True)) + return obs, rewards, dones, infos + + def save(self, path: pathlib.Path) -> None: + np.savez_compressed( + path, + first_obs=self.first_obs, + actions=np.stack(self.actions), + rewards=np.stack(self.rewards), + ends=np.stack(self.ends), + truncs=np.stack(self.truncs), + finals=np.stack(self.finals), + nexts=np.stack(self.nexts), + ) + + +def weights_sha256(model: PPO) -> str: + h = hashlib.sha256() + for name, tensor in sorted(model.policy.state_dict().items()): + h.update(name.encode()) + h.update(tensor.detach().cpu().contiguous().numpy().tobytes()) + return h.hexdigest() + + +def main() -> int: + p = argparse.ArgumentParser(description=__doc__) + p.add_argument("--env", choices=sorted(ENVS), required=True) + p.add_argument("--fault", choices=FAULTS, required=True) + p.add_argument("--dose", default="1.0") + p.add_argument("--seed", type=int, required=True) + p.add_argument("--out", required=True) + p.add_argument("--port", type=int, default=8854) + p.add_argument("--trace", action="store_true") + p.add_argument("--external-client", action="store_true") + a = p.parse_args() + spec = ENVS[a.env] + out = pathlib.Path(a.out).resolve() + out.mkdir(parents=True, exist_ok=True) + torch.set_num_threads(1) + + from plugrl_bridges.sb3 import PlugRLVecEnv + + dim, high = spec["action"] + client_fault = a.fault if a.fault in CLIENT_FAULTS else "none" + client = None + if not a.external_client: + client_log = open(out / "client.log", "w", encoding="utf-8") + client = subprocess.Popen( + [sys.executable, str(HERE / "faulty_client.py"), "--port", str(a.port), + "--num-envs", str(NUM_ENVS), "--seed", str(a.seed), "--env-id", spec["id"], + "--action-high", str(high), "--fault", client_fault, "--dose", a.dose, + "--record", str(out / "env_record.csv"), + "--ledger", str(out / "ledger.npz")], + stdout=client_log, stderr=subprocess.STDOUT, + ) # fmt: skip + env = PlugRLVecEnv( + num_envs=NUM_ENVS, + action_space=gym.spaces.Box(-high, high, (dim,), np.float32), + port=a.port, + host="0.0.0.0" if a.external_client else "127.0.0.1", + timeout=60.0, + episode_log=str(out / "episodes.csv"), + ) + trace = WireTrace(env) if a.trace else None + inner = trace if trace is not None else env + if a.fault in LOG_FAULTS: + env = FaultyLogMonitor(inner, str(out / "monitor.csv"), a.fault, a.dose) + else: + env = VecMonitor(inner, filename=str(out / "monitor.csv")) + # PPO(seed=) seeds torch and numpy; the client resets env i with seed + i. + model = PPO("MlpPolicy", env, seed=a.seed, device="cpu", verbose=0, **spec["ppo"]) + result = {"env": a.env, "fault": a.fault, "dose": a.dose, "seed": a.seed} + start = time.perf_counter() + try: + model.learn(total_timesteps=spec["total"]) + except Exception as exc: # a fault the bridge rejects ends the run here + result["raised"] = f"{type(exc).__name__}: {exc}" + result.update( + weights_sha256=weights_sha256(model), + learn_s=round(time.perf_counter() - start, 3), + steps=model.num_timesteps, + torch=torch.__version__, + ) + if isinstance(env, FaultyLogMonitor): + result["log_cells"] = env.cells + model.save(out / "model.zip") + if trace is not None: + trace.save(out / "trace.npz") + try: + env.close() + except Exception as exc: + result["close_raised"] = f"{type(exc).__name__}: {exc}" + if client is None: + result["client_rc"] = "external" + else: + try: + result["client_rc"] = client.wait(timeout=60) + except subprocess.TimeoutExpired: + client.kill() + result["client_rc"] = "killed" + (out / "result.json").write_text(json.dumps(result, indent=2) + "\n") + print(json.dumps(result)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 7d70cda80b545e59a681b3b5b2bf93e420691e07 Mon Sep 17 00:00:00 2001 From: tactino <18781106300@163.com> Date: Fri, 2 Oct 2026 17:47:49 -0400 Subject: [PATCH 2/2] E55: findings - a step ledger on both sides of the boundary catches and locates every fault in what crosses, with no reference run, across machines too One machine: 189 of 189 client-fault runs caught at their first changed value and field, no false alarm in 27. Across machines (env client on the laptop): all 21 faults caught and located, none differs, while the fault-free run ended on other weights than on guangzhao. Ledger or record caught every run with a changed value. Every check and prediction holds. --- experiments/e55-step-ledger/FINDINGS.md | 92 ++++++++ experiments/e55-step-ledger/merge_runs.py | 47 ++++ .../results/bridges-src.sha256 | 6 + .../e55-step-ledger/results/by_dose.csv | 10 + .../e55-step-ledger/results/cross/by_dose.csv | 4 + .../results/cross/laptop-python.txt | 2 + .../e55-step-ledger/results/cross/ledger.csv | 25 ++ .../e55-step-ledger/results/cross/runs.csv | 25 ++ .../e55-step-ledger/results/cross/runs.jsonl | 24 ++ .../e55-step-ledger/results/cross/summary.txt | 33 +++ .../e55-step-ledger/results/e55-src.sha256 | 3 + experiments/e55-step-ledger/results/jobs.txt | 216 +++++++++++++++++ .../e55-step-ledger/results/ledger.csv | 217 ++++++++++++++++++ experiments/e55-step-ledger/results/load.txt | 2 + .../e55-step-ledger/results/registered.out | 14 ++ experiments/e55-step-ledger/results/runs.csv | 217 ++++++++++++++++++ .../e55-step-ledger/results/runs.jsonl | 216 +++++++++++++++++ .../e55-step-ledger/results/summary.txt | 89 +++++++ .../e55-step-ledger/results/verdicts.txt | 7 + experiments/e55-step-ledger/verdicts.py | 152 ++++++++++++ 20 files changed, 1401 insertions(+) create mode 100644 experiments/e55-step-ledger/FINDINGS.md create mode 100644 experiments/e55-step-ledger/merge_runs.py create mode 100644 experiments/e55-step-ledger/results/bridges-src.sha256 create mode 100644 experiments/e55-step-ledger/results/by_dose.csv create mode 100644 experiments/e55-step-ledger/results/cross/by_dose.csv create mode 100644 experiments/e55-step-ledger/results/cross/laptop-python.txt create mode 100644 experiments/e55-step-ledger/results/cross/ledger.csv create mode 100644 experiments/e55-step-ledger/results/cross/runs.csv create mode 100644 experiments/e55-step-ledger/results/cross/runs.jsonl create mode 100644 experiments/e55-step-ledger/results/cross/summary.txt create mode 100644 experiments/e55-step-ledger/results/e55-src.sha256 create mode 100644 experiments/e55-step-ledger/results/jobs.txt create mode 100644 experiments/e55-step-ledger/results/ledger.csv create mode 100644 experiments/e55-step-ledger/results/load.txt create mode 100644 experiments/e55-step-ledger/results/registered.out create mode 100644 experiments/e55-step-ledger/results/runs.csv create mode 100644 experiments/e55-step-ledger/results/runs.jsonl create mode 100644 experiments/e55-step-ledger/results/summary.txt create mode 100644 experiments/e55-step-ledger/results/verdicts.txt create mode 100644 experiments/e55-step-ledger/verdicts.py diff --git a/experiments/e55-step-ledger/FINDINGS.md b/experiments/e55-step-ledger/FINDINGS.md new file mode 100644 index 0000000..66e6b16 --- /dev/null +++ b/experiments/e55-step-ledger/FINDINGS.md @@ -0,0 +1,92 @@ +# E55: a step ledger on both sides of the boundary catches and locates every fault in what crosses, with no reference run, across machines too + +2026-10-02 · guangzhao (E54's `bridges-venv`) and a Windows 11 laptop +(Python 3.11.14, numpy 2.3.2, gymnasium 1.3.0) over Tailscale · protocol: +[`PROTOCOL.md`](PROTOCOL.md), after the pilots in `results/pilot/`, before +the registered runs · no amendment + +--- + +## The result + +E54's faults on Pendulum, at doses one, 0.01 and 1.0. Each environment was +wrapped in `LedgerEnv`, which records what it took and gave. The trainer +recorded what it sent and received. `ledger.py` compared the two, step by +step, with no fault-free run. + +| | runs | client faults caught and located | false alarms | ledger or record | +| --- | --- | --- | --- | --- | +| one machine, seeds 0-2 | 216 | **189 of 189** | 0 of 27 | 207 of 207 | +| across machines, seed 0 | 24 | **21 of 21** | 0 of 3 | 23 of 23 | + +Every check and prediction holds (`results/verdicts.txt`): +- **V1:** all 240 runs completed; every client exited 0. +- **V2:** `none` ended on E50's weights at seeds 0-2. The wrapper changes + nothing that crosses. +- **P1:** on one machine, all 189 client-fault runs with a changed value + were caught. Each first difference was the fault's first changed cell, + in the field the fault touches. +- **P2:** no difference in any of the 30 control and log-fault runs, on one + machine or across two. +- **P3:** across machines, all 21 client faults at one value were caught + and located; `none` showed no difference. +- **P4:** across machines, `none` ended on `d7a19cc0`, not guangzhao's + `ec5b8226`. +- **P5:** the ledger or E54's record caught every run with a changed value: + 207 of 207, and 23 of 23. + +--- + +## What it means + +**Compare the two sides, and nothing else is needed.** A boundary fault is a +difference between what the environment took and gave and what the +trainer sent and received. Recording both and comparing them finds the +fault where it is: the step, the env and the field. The ledger counted +exactly the values a fault changed: 1,068 for `obs:f16` at 1%, the same +count the client kept. It does not need a fault-free run, a seed that +reproduces, or the two sides on one machine. + +**Across machines it is the only check of the four that sees every fault +in what crosses.** +- Byte identity cannot be used there. A fault-free run across machines + ended on other weights than the same seed on guangzhao, as E43 and E50 + found: it would have called that run faulty. +- The status rule caught none of the 24 runs. +- E54's record caught 8, the faults that change the books. +- The ledger caught all 21 client faults and raised no alarm on the three + others. + +**What it leaves to the record.** A fault in the trainer's own log changes +nothing that crosses, so the ledger cannot see it. E54's record, kept at the +environment, catches those. The two together caught every fault, on one +machine and across two. + +**What it costs.** The ledger is a wrapper around each environment, plus a +trace on the trainer's side. Neither changed a byte of what crossed (V2). +A run across machines took 42-55 s, against 20 s on one machine. That is +the link, not the ledger: E43 measured the crossing's cost. + +--- + +## What E55 does not show + +* **A ledger checked while the run goes on.** The two sides were compared + after each run. A digest of each step carried in the protocol would let + the server check as it goes; that is a protocol feature still to design. +* **Faults inside the environment, or before the wrapper.** The ledger sits + at the environment's own interface. A fault there, or in an environment + reached only through its own client, is beyond it. +* **Any env but Pendulum, or any trainer but SB3.** E54 covers HalfCheetah + for the other checks. +* **Faults it was not built to see.** Every field it compares is one E54 + injected a fault into; a field that crosses and is not compared + (`info`) is not checked. + +Kept here, in `results/` and `results/cross/`: `ledger.csv` (`ledger.py`), +`runs.csv` and `summary.txt` (`summarise.py`), `runs.jsonl` (`merge_runs.py`, +every run's `result.json` and `fault.json`), and `verdicts.txt` +(`verdicts.py`). The per-run directories are kept on guangzhao and the +laptop and not committed: traces and ledgers, the episode logs and the +final policies. A run on one machine is deterministic, so rerunning its line +of `jobs.txt` there reproduces them. diff --git a/experiments/e55-step-ledger/merge_runs.py b/experiments/e55-step-ledger/merge_runs.py new file mode 100644 index 0000000..490ece7 --- /dev/null +++ b/experiments/e55-step-ledger/merge_runs.py @@ -0,0 +1,47 @@ +"""E54: merge each run's result.json, fault.json and log tails into one file. + + python merge_runs.py results # writes results/runs.jsonl + +One line per run: its env, fault, dose and seed (from its directory), its +result.json and fault.json, and the last line of its client.log and +train.log. +""" + +from __future__ import annotations + +import json +import pathlib +import sys + + +def last_line(path: pathlib.Path) -> str: + if not path.exists(): + return "" + lines = path.read_text(encoding="utf-8", errors="replace").strip().splitlines() + return lines[-1] if lines else "" + + +def main() -> int: + root = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("results") + out = [] + for res in sorted(root.glob("*/*/*/seed*/result.json")): + run = res.parent + line = { + "env": run.parent.parent.parent.name, + "fault": run.parent.parent.name.replace("__", ":"), + "dose": run.parent.name, + "seed": int(run.name.removeprefix("seed")), + "result": json.loads(res.read_text()), + } + if (run / "fault.json").exists(): + line["fault_json"] = json.loads((run / "fault.json").read_text()) + line["client_log"] = last_line(run / "client.log") + line["train_log"] = last_line(run / "train.log") + out.append(json.dumps(line, sort_keys=True)) + (root / "runs.jsonl").write_text("\n".join(out) + "\n", encoding="utf-8") + print(len(out), "runs") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/experiments/e55-step-ledger/results/bridges-src.sha256 b/experiments/e55-step-ledger/results/bridges-src.sha256 new file mode 100644 index 0000000..755002f --- /dev/null +++ b/experiments/e55-step-ledger/results/bridges-src.sha256 @@ -0,0 +1,6 @@ +766ad3d83be9696dff26543ce2fb35c3c31cb845fc42cb148d411b263e8bf9b5 src/plugrl_bridges/gym.py +e89ebb2c4ed69ed5788cd945bc4d36ecc023949627433818b98d9ea43d1fa7d5 src/plugrl_bridges/__init__.py +4001b6400d4031504525949fa721ad425fa0cb16a91cf30537dfd6d5859d8336 src/plugrl_bridges/observations.py +1c22fca6e0f01e8ec730ee893568cc301d2d21c3e16cc2102c22959ced00ff08 src/plugrl_bridges/rlinf.py +f02264e551925eed72ba2e4dfb5159f7e174e4ac7231aa122689ef2172484646 src/plugrl_bridges/sb3.py +0e56388fea17a73d4defcb437d3a4b6c8392c609dfca07efe92343e6cac72656 src/plugrl_bridges/server.py diff --git a/experiments/e55-step-ledger/results/by_dose.csv b/experiments/e55-step-ledger/results/by_dose.csv new file mode 100644 index 0000000..7e7b277 --- /dev/null +++ b/experiments/e55-step-ledger/results/by_dose.csv @@ -0,0 +1,10 @@ +env,kind,dose,runs,raises,rule,strict,weights,record,bridge,either +pendulum,client,one,63,0.0,0.0,,1.0,0.206,0.0,1.0 +pendulum,client,0.01,63,0.0,0.048,,1.0,0.286,0.0,1.0 +pendulum,client,1.0,63,0.0,0.429,,1.0,0.238,0.0,1.0 +pendulum,log,one,6,0.0,0.0,,0.0,1.0,1.0,1.0 +pendulum,log,0.01,6,0.0,0.0,,0.0,1.0,1.0,1.0 +pendulum,log,1.0,6,0.0,0.0,,0.0,1.0,1.0,1.0 +pendulum,all,one,69,0.0,0.0,,0.913,0.275,0.087,1.0 +pendulum,all,0.01,69,0.0,0.043,,0.913,0.348,0.087,1.0 +pendulum,all,1.0,69,0.0,0.391,,0.913,0.304,0.087,1.0 diff --git a/experiments/e55-step-ledger/results/cross/by_dose.csv b/experiments/e55-step-ledger/results/cross/by_dose.csv new file mode 100644 index 0000000..5e9e20d --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/by_dose.csv @@ -0,0 +1,4 @@ +env,kind,dose,runs,raises,rule,strict,weights,record,bridge,either +pendulum,client,one,21,0.0,0.0,,1.0,0.286,0.0,1.0 +pendulum,log,one,2,0.0,0.0,,0.0,1.0,1.0,1.0 +pendulum,all,one,23,0.0,0.0,,0.913,0.348,0.087,1.0 diff --git a/experiments/e55-step-ledger/results/cross/laptop-python.txt b/experiments/e55-step-ledger/results/cross/laptop-python.txt new file mode 100644 index 0000000..0ea9946 --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/laptop-python.txt @@ -0,0 +1,2 @@ +Python 3.11.14 +numpy 2.3.2 gymnasium 1.3.0 diff --git a/experiments/e55-step-ledger/results/cross/ledger.csv b/experiments/e55-step-ledger/results/cross/ledger.csv new file mode 100644 index 0000000..251de49 --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/ledger.csv @@ -0,0 +1,25 @@ +run,fault,dose,seed,cells,caught,differing,injected,found,right +pendulum/action__clip/one/seed0,action:clip,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/action__f16/one/seed0,action:f16,one,0,1,1,1,3255/0,3255/0 action,1 +pendulum/action__stale/one/seed0,action:stale,one,0,1,1,1,3255/0,3255/0 action,1 +pendulum/action__swap/one/seed0,action:swap,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/action__zero/one/seed0,action:zero,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/final-obs__f16/one/seed0,final-obs:f16,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__stale/one/seed0,final-obs:stale,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__swap/one/seed0,final-obs:swap,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__zero/one/seed0,final-obs:zero,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/log__drop-first/one/seed0,log:drop-first,one,0,1,0,0,,,1 +pendulum/log__short/one/seed0,log:short,one,0,1,0,0,,,1 +pendulum/none/1.0/seed0,none,1.0,0,0,0,0,,,1 +pendulum/obs__f16/one/seed0,obs:f16,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__stale/one/seed0,obs:stale,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__swap/one/seed0,obs:swap,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__zero/one/seed0,obs:zero,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/reward__f16/one/seed0,reward:f16,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__stale/one/seed0,reward:stale,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__swap/one/seed0,reward:swap,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__zero/one/seed0,reward:zero,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/step__fill/one/seed0,step:fill,one,0,1,1,3151,3249/0,3249/0 reward,1 +pendulum/terminated__spurious/one/seed0,terminated:spurious,one,0,1,1,1,3249/0,3249/0 end,1 +pendulum/truncated__as-term/one/seed0,truncated:as-term,one,0,1,1,1,3399/0,3399/0 limit,1 +pendulum/truncated__drop/one/seed0,truncated:drop,one,0,1,1,1,3399/0,3399/0 end,1 diff --git a/experiments/e55-step-ledger/results/cross/runs.csv b/experiments/e55-step-ledger/results/cross/runs.csv new file mode 100644 index 0000000..cda9341 --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/runs.csv @@ -0,0 +1,25 @@ +env,fault,dose,seed,cells,raises,rule,strict,weights,record,bridge,gain,last,episodes,sha,learn_s,raised,complete +pendulum,action:clip,one,0,1,0,0,,1,0,0,1027.8,-197.0,512,e097951f,43.482,,0 +pendulum,action:f16,one,0,1,0,0,,1,0,0,1027.5,-197.3,512,66062869,46.664,,0 +pendulum,action:stale,one,0,1,0,0,,1,0,0,1038.5,-186.3,512,4e2dbe5f,47.071,,0 +pendulum,action:swap,one,0,1,0,0,,1,0,0,1004.3,-220.5,512,d12114c2,47.609,,0 +pendulum,action:zero,one,0,1,0,0,,1,0,0,1031.9,-192.9,512,56ff1e1c,46.927,,0 +pendulum,final-obs:f16,one,0,1,0,0,,1,0,0,1023.6,-201.2,512,bfeaff7b,44.199,,0 +pendulum,final-obs:stale,one,0,1,0,0,,1,0,0,1029.0,-195.8,512,b5e96b19,44.361,,0 +pendulum,final-obs:swap,one,0,1,0,0,,1,0,0,1031.5,-193.4,512,7b8e5fb1,42.767,,0 +pendulum,final-obs:zero,one,0,1,0,0,,1,0,0,1029.8,-195.1,512,ae6cc423,43.958,,0 +pendulum,log:drop-first,one,0,1,0,0,,0,1,1,1024.7,-200.1,512,d7a19cc0,42.401,,0 +pendulum,log:short,one,0,1,0,0,,0,1,1,1024.7,-200.1,512,d7a19cc0,42.178,,0 +pendulum,none,1.0,0,0,0,0,,0,0,0,1024.7,-200.1,512,d7a19cc0,50.798,,0 +pendulum,obs:f16,one,0,1,0,0,,1,0,0,1033.7,-191.1,512,1289e7ab,47.483,,0 +pendulum,obs:stale,one,0,1,0,0,,1,0,0,1037.2,-187.6,512,8c9e41e8,49.051,,0 +pendulum,obs:swap,one,0,1,0,0,,1,0,0,1032.9,-191.9,512,5eefdc69,46.681,,0 +pendulum,obs:zero,one,0,1,0,0,,1,0,0,1030.7,-194.1,512,dfec8b25,50.221,,0 +pendulum,reward:f16,one,0,1,0,0,,1,0,0,1025.5,-199.3,512,3884740e,44.635,,0 +pendulum,reward:stale,one,0,1,0,0,,1,1,0,1023.5,-201.3,512,8c7556e2,54.767,,0 +pendulum,reward:swap,one,0,1,0,0,,1,1,0,1038.8,-186.0,512,5c6d2c29,46.784,,0 +pendulum,reward:zero,one,0,1,0,0,,1,1,0,1022.1,-202.7,512,8aed0759,42.906,,0 +pendulum,step:fill,one,0,1,0,0,,1,1,0,1027.0,-197.8,511,69681840,43.894,,0 +pendulum,terminated:spurious,one,0,1,0,0,,1,1,0,1028.7,-196.1,513,2fbf4212,41.781,,0 +pendulum,truncated:as-term,one,0,1,0,0,,1,0,0,1015.5,-209.4,512,b6d59434,42.965,,0 +pendulum,truncated:drop,one,0,1,0,0,,1,1,0,1036.2,-188.6,511,2b9a4f45,43.384,,0 diff --git a/experiments/e55-step-ledger/results/cross/runs.jsonl b/experiments/e55-step-ledger/results/cross/runs.jsonl new file mode 100644 index 0000000..b919737 --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/runs.jsonl @@ -0,0 +1,24 @@ +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 1, "dose": "one", "fault": "action:clip", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "action:clip", "learn_s": 43.482, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e097951fd023ae7b38aecd1ec77628ccee8cfd49d67e8755eff793256d7c7cde"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"e097951fd023ae7b38aecd1ec77628ccee8cfd49d67e8755eff793256d7c7cde\", \"learn_s\": 43.482, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "action:f16", "first": [3255, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "action:f16", "learn_s": 46.664, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "66062869535a596f39b0dff25a7dcb4e4699faf188d4ad6ee36d1155cea26ede"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"66062869535a596f39b0dff25a7dcb4e4699faf188d4ad6ee36d1155cea26ede\", \"learn_s\": 46.664, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "action:stale", "first": [3255, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "action:stale", "learn_s": 47.071, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "4e2dbe5f31fa090c970ad9723ffeaeecd2caed30e893eac1b011e2736bd12d47"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"4e2dbe5f31fa090c970ad9723ffeaeecd2caed30e893eac1b011e2736bd12d47\", \"learn_s\": 47.071, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "action:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "action:swap", "learn_s": 47.609, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d12114c2a6140ac1fdbeae01e542342553351b23198ae475fc2d223304625172"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"d12114c2a6140ac1fdbeae01e542342553351b23198ae475fc2d223304625172\", \"learn_s\": 47.609, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "action:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "action:zero", "learn_s": 46.927, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "56ff1e1ca2bf0391171ba42bc457f994587efcd25b6e96a8dddd5815304cf049"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"56ff1e1ca2bf0391171ba42bc457f994587efcd25b6e96a8dddd5815304cf049\", \"learn_s\": 46.927, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:f16", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 44.199, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bfeaff7b6dc744164b3a01b788c0a1d6d9f9f36f672c2c9afb6332ce11b6b5b1"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"bfeaff7b6dc744164b3a01b788c0a1d6d9f9f36f672c2c9afb6332ce11b6b5b1\", \"learn_s\": 44.199, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:stale", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 44.361, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b5e96b19db4469fcb504fb41132fde319ca5e9bcd9b611eb11fe2901f4e0ee76"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"b5e96b19db4469fcb504fb41132fde319ca5e9bcd9b611eb11fe2901f4e0ee76\", \"learn_s\": 44.361, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:swap", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 42.767, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "7b8e5fb1dad5b6b633ea62c80d281d80e5d422bb8d60f8fae122a95415a0d854"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"7b8e5fb1dad5b6b633ea62c80d281d80e5d422bb8d60f8fae122a95415a0d854\", \"learn_s\": 42.767, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:zero", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 43.958, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ae6cc423b90860693ba6f3abe6cc3c2956311fbb59e2e651aafb7bd80fac26a7"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"ae6cc423b90860693ba6f3abe6cc3c2956311fbb59e2e651aafb7bd80fac26a7\", \"learn_s\": 43.958, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "log:drop-first", "learn_s": 42.401, "log_cells": 1, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733\", \"learn_s\": 42.401, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "log:short", "learn_s": 42.178, "log_cells": 1, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733\", \"learn_s\": 42.178, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "1.0", "env": "pendulum", "fault": "none", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": "external", "dose": "1.0", "env": "pendulum", "fault": "none", "learn_s": 50.798, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"none\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"d7a19cc0845a49273a549f5d2ed858fea79eda58b1413f132795b80de2f2f733\", \"learn_s\": 50.798, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "obs:f16", "learn_s": 47.483, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1289e7ab54b446a2dd35ceca8753e375f0723b4a2ee4d4b7697b67c9e75f0a5b"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"1289e7ab54b446a2dd35ceca8753e375f0723b4a2ee4d4b7697b67c9e75f0a5b\", \"learn_s\": 47.483, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "obs:stale", "learn_s": 49.051, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8c9e41e83ba7b1f73baffa3b807c19f3b8e5a38b0043fabf8d84f5eb280508d1"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"8c9e41e83ba7b1f73baffa3b807c19f3b8e5a38b0043fabf8d84f5eb280508d1\", \"learn_s\": 49.051, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "obs:swap", "learn_s": 46.681, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "5eefdc6966e89189d98b606cdac395b05d82042ebb0e85aebf0602ff5952d0d4"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"5eefdc6966e89189d98b606cdac395b05d82042ebb0e85aebf0602ff5952d0d4\", \"learn_s\": 46.681, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "obs:zero", "learn_s": 50.221, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "dfec8b259ccc2a2bf9c48e4b1ed405491a2f3cfeb9ff53d57989781f98808193"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"dfec8b259ccc2a2bf9c48e4b1ed405491a2f3cfeb9ff53d57989781f98808193\", \"learn_s\": 50.221, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "reward:f16", "learn_s": 44.635, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3884740e493d53865ddaaf91cccc30525fa41be9ad544ddcb2f5fed670a68d2c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"3884740e493d53865ddaaf91cccc30525fa41be9ad544ddcb2f5fed670a68d2c\", \"learn_s\": 44.635, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "reward:stale", "learn_s": 54.767, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8c7556e23272270fa95fe032766cee0e6d8fc9aa07dded1c5921f9ec84c3ceef"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"8c7556e23272270fa95fe032766cee0e6d8fc9aa07dded1c5921f9ec84c3ceef\", \"learn_s\": 54.767, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "reward:swap", "learn_s": 46.784, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "5c6d2c29176f2ef3a3055f3ff07f8483f419f79032166e8b6d4d2af507226a86"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"5c6d2c29176f2ef3a3055f3ff07f8483f419f79032166e8b6d4d2af507226a86\", \"learn_s\": 46.784, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "reward:zero", "learn_s": 42.906, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8aed07592df91e6518acbb1db6e98f99cd3e8414ba379e09e8ff18162f47894c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"8aed07592df91e6518acbb1db6e98f99cd3e8414ba379e09e8ff18162f47894c\", \"learn_s\": 42.906, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1, "dose": "one", "fault": "step:fill", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "step:fill", "learn_s": 43.894, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "6968184037b145bb436fba9243eaea9fe604963cef4162ff7a9babf6cfb1597d"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"6968184037b145bb436fba9243eaea9fe604963cef4162ff7a9babf6cfb1597d\", \"learn_s\": 43.894, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1, "dose": "one", "fault": "terminated:spurious", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 41.781, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2fbf4212395743f6a0c6f16fce25054a30a4696b63b6f30bc5e19c7ec5e15bdf"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"2fbf4212395743f6a0c6f16fce25054a30a4696b63b6f30bc5e19c7ec5e15bdf\", \"learn_s\": 41.781, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:as-term", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 42.965, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b6d594347b70da42ed036dfc33c1a7e0567b1e62c0e48cf9eac820c5d7b093fd"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"b6d594347b70da42ed036dfc33c1a7e0567b1e62c0e48cf9eac820c5d7b093fd\", \"learn_s\": 42.965, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} +{"client_log": "client exit 0", "dose": "one", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:drop", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": "external", "dose": "one", "env": "pendulum", "fault": "truncated:drop", "learn_s": 43.384, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2b9a4f45c0822282bdf6d3dabb389b2f464c8bff9fb50b4ceb142c1653858aa6"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"2b9a4f45c0822282bdf6d3dabb389b2f464c8bff9fb50b4ceb142c1653858aa6\", \"learn_s\": 43.384, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": \"external\"}"} diff --git a/experiments/e55-step-ledger/results/cross/summary.txt b/experiments/e55-step-ledger/results/cross/summary.txt new file mode 100644 index 0000000..98a597a --- /dev/null +++ b/experiments/e55-step-ledger/results/cross/summary.txt @@ -0,0 +1,33 @@ +env fault dose cells raises rule strict weights record bridge +pendulum none 1.0 0 0/1 0/1 - 0/1 0/1 0/1 +pendulum obs:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum obs:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum action:clip one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum reward:zero one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:stale one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:swap one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum reward:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:zero one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:stale one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:swap one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum final-obs:f16 one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum terminated:spurious one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum truncated:drop one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum truncated:as-term one 1 0/1 0/1 - 1/1 0/1 0/1 +pendulum step:fill one 1 0/1 0/1 - 1/1 1/1 0/1 +pendulum log:drop-first one 1 0/1 0/1 - 0/1 1/1 1/1 +pendulum log:short one 1 0/1 0/1 - 0/1 1/1 1/1 + +share of runs caught, by dose (runs with a changed cell; either = weights or record) + pendulum client one n= 21 raises 0.0 rule 0.0 strict weights 1.0 record 0.286 bridge 0.0 either 1.0 + pendulum log one n= 2 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum all one n= 23 raises 0.0 rule 0.0 strict weights 0.913 record 0.348 bridge 0.087 either 1.0 + +pendulum none at seed 0: d7a19cc0, E50's ec5b8226: DIFFERENT +incomplete without an error: [('pendulum', 'action:clip', 'one', 0), ('pendulum', 'action:f16', 'one', 0), ('pendulum', 'action:stale', 'one', 0), ('pendulum', 'action:swap', 'one', 0), ('pendulum', 'action:zero', 'one', 0), ('pendulum', 'final-obs:f16', 'one', 0), ('pendulum', 'final-obs:stale', 'one', 0), ('pendulum', 'final-obs:swap', 'one', 0), ('pendulum', 'final-obs:zero', 'one', 0), ('pendulum', 'log:drop-first', 'one', 0), ('pendulum', 'log:short', 'one', 0), ('pendulum', 'none', '1.0', 0), ('pendulum', 'obs:f16', 'one', 0), ('pendulum', 'obs:stale', 'one', 0), ('pendulum', 'obs:swap', 'one', 0), ('pendulum', 'obs:zero', 'one', 0), ('pendulum', 'reward:f16', 'one', 0), ('pendulum', 'reward:stale', 'one', 0), ('pendulum', 'reward:swap', 'one', 0), ('pendulum', 'reward:zero', 'one', 0), ('pendulum', 'step:fill', 'one', 0), ('pendulum', 'terminated:spurious', 'one', 0), ('pendulum', 'truncated:as-term', 'one', 0), ('pendulum', 'truncated:drop', 'one', 0)] diff --git a/experiments/e55-step-ledger/results/e55-src.sha256 b/experiments/e55-step-ledger/results/e55-src.sha256 new file mode 100644 index 0000000..d7b49f3 --- /dev/null +++ b/experiments/e55-step-ledger/results/e55-src.sha256 @@ -0,0 +1,3 @@ +939fdb71bae513fe07b03e20504b0ff5b2b4d3d4fb298d90bd6b7ee70f26fb4b train.py +9cdd744b2d7f0786d226d53b948c128be08fe96221c74e12bd8c202a58c94afd faulty_client.py +f55e0a1ed50f47623278fd85b211073faf02cd7b8a8ae6bccd08a2740717a8e9 jobs.py diff --git a/experiments/e55-step-ledger/results/jobs.txt b/experiments/e55-step-ledger/results/jobs.txt new file mode 100644 index 0000000..7cd3020 --- /dev/null +++ b/experiments/e55-step-ledger/results/jobs.txt @@ -0,0 +1,216 @@ +pendulum none 1.0 0 trace +pendulum delay-1ms 1.0 0 trace +pendulum wire-float64 1.0 0 trace +pendulum obs:zero one 0 trace +pendulum obs:zero 0.01 0 trace +pendulum obs:zero 1.0 0 trace +pendulum obs:stale one 0 trace +pendulum obs:stale 0.01 0 trace +pendulum obs:stale 1.0 0 trace +pendulum obs:swap one 0 trace +pendulum obs:swap 0.01 0 trace +pendulum obs:swap 1.0 0 trace +pendulum obs:f16 one 0 trace +pendulum obs:f16 0.01 0 trace +pendulum obs:f16 1.0 0 trace +pendulum action:zero one 0 trace +pendulum action:zero 0.01 0 trace +pendulum action:zero 1.0 0 trace +pendulum action:stale one 0 trace +pendulum action:stale 0.01 0 trace +pendulum action:stale 1.0 0 trace +pendulum action:swap one 0 trace +pendulum action:swap 0.01 0 trace +pendulum action:swap 1.0 0 trace +pendulum action:f16 one 0 trace +pendulum action:f16 0.01 0 trace +pendulum action:f16 1.0 0 trace +pendulum action:clip one 0 trace +pendulum action:clip 0.01 0 trace +pendulum action:clip 1.0 0 trace +pendulum reward:zero one 0 trace +pendulum reward:zero 0.01 0 trace +pendulum reward:zero 1.0 0 trace +pendulum reward:stale one 0 trace +pendulum reward:stale 0.01 0 trace +pendulum reward:stale 1.0 0 trace +pendulum reward:swap one 0 trace +pendulum reward:swap 0.01 0 trace +pendulum reward:swap 1.0 0 trace +pendulum reward:f16 one 0 trace +pendulum reward:f16 0.01 0 trace +pendulum reward:f16 1.0 0 trace +pendulum final-obs:zero one 0 trace +pendulum final-obs:zero 0.01 0 trace +pendulum final-obs:zero 1.0 0 trace +pendulum final-obs:stale one 0 trace +pendulum final-obs:stale 0.01 0 trace +pendulum final-obs:stale 1.0 0 trace +pendulum final-obs:swap one 0 trace +pendulum final-obs:swap 0.01 0 trace +pendulum final-obs:swap 1.0 0 trace +pendulum final-obs:f16 one 0 trace +pendulum final-obs:f16 0.01 0 trace +pendulum final-obs:f16 1.0 0 trace +pendulum terminated:spurious one 0 trace +pendulum terminated:spurious 0.01 0 trace +pendulum terminated:spurious 1.0 0 trace +pendulum truncated:drop one 0 trace +pendulum truncated:drop 0.01 0 trace +pendulum truncated:drop 1.0 0 trace +pendulum truncated:as-term one 0 trace +pendulum truncated:as-term 0.01 0 trace +pendulum truncated:as-term 1.0 0 trace +pendulum step:fill one 0 trace +pendulum step:fill 0.01 0 trace +pendulum step:fill 1.0 0 trace +pendulum log:drop-first one 0 trace +pendulum log:drop-first 0.01 0 trace +pendulum log:drop-first 1.0 0 trace +pendulum log:short one 0 trace +pendulum log:short 0.01 0 trace +pendulum log:short 1.0 0 trace +pendulum none 1.0 1 trace +pendulum delay-1ms 1.0 1 trace +pendulum wire-float64 1.0 1 trace +pendulum obs:zero one 1 trace +pendulum obs:zero 0.01 1 trace +pendulum obs:zero 1.0 1 trace +pendulum obs:stale one 1 trace +pendulum obs:stale 0.01 1 trace +pendulum obs:stale 1.0 1 trace +pendulum obs:swap one 1 trace +pendulum obs:swap 0.01 1 trace +pendulum obs:swap 1.0 1 trace +pendulum obs:f16 one 1 trace +pendulum obs:f16 0.01 1 trace +pendulum obs:f16 1.0 1 trace +pendulum action:zero one 1 trace +pendulum action:zero 0.01 1 trace +pendulum action:zero 1.0 1 trace +pendulum action:stale one 1 trace +pendulum action:stale 0.01 1 trace +pendulum action:stale 1.0 1 trace +pendulum action:swap one 1 trace +pendulum action:swap 0.01 1 trace +pendulum action:swap 1.0 1 trace +pendulum action:f16 one 1 trace +pendulum action:f16 0.01 1 trace +pendulum action:f16 1.0 1 trace +pendulum action:clip one 1 trace +pendulum action:clip 0.01 1 trace +pendulum action:clip 1.0 1 trace +pendulum reward:zero one 1 trace +pendulum reward:zero 0.01 1 trace +pendulum reward:zero 1.0 1 trace +pendulum reward:stale one 1 trace +pendulum reward:stale 0.01 1 trace +pendulum reward:stale 1.0 1 trace +pendulum reward:swap one 1 trace +pendulum reward:swap 0.01 1 trace +pendulum reward:swap 1.0 1 trace +pendulum reward:f16 one 1 trace +pendulum reward:f16 0.01 1 trace +pendulum reward:f16 1.0 1 trace +pendulum final-obs:zero one 1 trace +pendulum final-obs:zero 0.01 1 trace +pendulum final-obs:zero 1.0 1 trace +pendulum final-obs:stale one 1 trace +pendulum final-obs:stale 0.01 1 trace +pendulum final-obs:stale 1.0 1 trace +pendulum final-obs:swap one 1 trace +pendulum final-obs:swap 0.01 1 trace +pendulum final-obs:swap 1.0 1 trace +pendulum final-obs:f16 one 1 trace +pendulum final-obs:f16 0.01 1 trace +pendulum final-obs:f16 1.0 1 trace +pendulum terminated:spurious one 1 trace +pendulum terminated:spurious 0.01 1 trace +pendulum terminated:spurious 1.0 1 trace +pendulum truncated:drop one 1 trace +pendulum truncated:drop 0.01 1 trace +pendulum truncated:drop 1.0 1 trace +pendulum truncated:as-term one 1 trace +pendulum truncated:as-term 0.01 1 trace +pendulum truncated:as-term 1.0 1 trace +pendulum step:fill one 1 trace +pendulum step:fill 0.01 1 trace +pendulum step:fill 1.0 1 trace +pendulum log:drop-first one 1 trace +pendulum log:drop-first 0.01 1 trace +pendulum log:drop-first 1.0 1 trace +pendulum log:short one 1 trace +pendulum log:short 0.01 1 trace +pendulum log:short 1.0 1 trace +pendulum none 1.0 2 trace +pendulum delay-1ms 1.0 2 trace +pendulum wire-float64 1.0 2 trace +pendulum obs:zero one 2 trace +pendulum obs:zero 0.01 2 trace +pendulum obs:zero 1.0 2 trace +pendulum obs:stale one 2 trace +pendulum obs:stale 0.01 2 trace +pendulum obs:stale 1.0 2 trace +pendulum obs:swap one 2 trace +pendulum obs:swap 0.01 2 trace +pendulum obs:swap 1.0 2 trace +pendulum obs:f16 one 2 trace +pendulum obs:f16 0.01 2 trace +pendulum obs:f16 1.0 2 trace +pendulum action:zero one 2 trace +pendulum action:zero 0.01 2 trace +pendulum action:zero 1.0 2 trace +pendulum action:stale one 2 trace +pendulum action:stale 0.01 2 trace +pendulum action:stale 1.0 2 trace +pendulum action:swap one 2 trace +pendulum action:swap 0.01 2 trace +pendulum action:swap 1.0 2 trace +pendulum action:f16 one 2 trace +pendulum action:f16 0.01 2 trace +pendulum action:f16 1.0 2 trace +pendulum action:clip one 2 trace +pendulum action:clip 0.01 2 trace +pendulum action:clip 1.0 2 trace +pendulum reward:zero one 2 trace +pendulum reward:zero 0.01 2 trace +pendulum reward:zero 1.0 2 trace +pendulum reward:stale one 2 trace +pendulum reward:stale 0.01 2 trace +pendulum reward:stale 1.0 2 trace +pendulum reward:swap one 2 trace +pendulum reward:swap 0.01 2 trace +pendulum reward:swap 1.0 2 trace +pendulum reward:f16 one 2 trace +pendulum reward:f16 0.01 2 trace +pendulum reward:f16 1.0 2 trace +pendulum final-obs:zero one 2 trace +pendulum final-obs:zero 0.01 2 trace +pendulum final-obs:zero 1.0 2 trace +pendulum final-obs:stale one 2 trace +pendulum final-obs:stale 0.01 2 trace +pendulum final-obs:stale 1.0 2 trace +pendulum final-obs:swap one 2 trace +pendulum final-obs:swap 0.01 2 trace +pendulum final-obs:swap 1.0 2 trace +pendulum final-obs:f16 one 2 trace +pendulum final-obs:f16 0.01 2 trace +pendulum final-obs:f16 1.0 2 trace +pendulum terminated:spurious one 2 trace +pendulum terminated:spurious 0.01 2 trace +pendulum terminated:spurious 1.0 2 trace +pendulum truncated:drop one 2 trace +pendulum truncated:drop 0.01 2 trace +pendulum truncated:drop 1.0 2 trace +pendulum truncated:as-term one 2 trace +pendulum truncated:as-term 0.01 2 trace +pendulum truncated:as-term 1.0 2 trace +pendulum step:fill one 2 trace +pendulum step:fill 0.01 2 trace +pendulum step:fill 1.0 2 trace +pendulum log:drop-first one 2 trace +pendulum log:drop-first 0.01 2 trace +pendulum log:drop-first 1.0 2 trace +pendulum log:short one 2 trace +pendulum log:short 0.01 2 trace +pendulum log:short 1.0 2 trace diff --git a/experiments/e55-step-ledger/results/ledger.csv b/experiments/e55-step-ledger/results/ledger.csv new file mode 100644 index 0000000..fa363b0 --- /dev/null +++ b/experiments/e55-step-ledger/results/ledger.csv @@ -0,0 +1,217 @@ +run,fault,dose,seed,cells,caught,differing,injected,found,right +pendulum/action__clip/0.01/seed0,action:clip,0.01,0,564,1,564,32/11,32/11 action,1 +pendulum/action__clip/0.01/seed1,action:clip,0.01,1,518,1,518,5/7,5/7 action,1 +pendulum/action__clip/0.01/seed2,action:clip,0.01,2,529,1,529,5/7,5/7 action,1 +pendulum/action__clip/1.0/seed0,action:clip,1.0,0,63653,1,63653,0/3,0/3 action,1 +pendulum/action__clip/1.0/seed1,action:clip,1.0,1,63417,1,63417,0/2,0/2 action,1 +pendulum/action__clip/1.0/seed2,action:clip,1.0,2,58306,1,58306,0/0,0/0 action,1 +pendulum/action__clip/one/seed0,action:clip,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/action__clip/one/seed1,action:clip,one,1,1,1,1,3252/0,3252/0 action,1 +pendulum/action__clip/one/seed2,action:clip,one,2,1,1,1,3256/0,3256/0 action,1 +pendulum/action__f16/0.01/seed0,action:f16,0.01,0,746,1,746,5/7,5/7 action,1 +pendulum/action__f16/0.01/seed1,action:f16,0.01,1,707,1,707,32/11,32/11 action,1 +pendulum/action__f16/0.01/seed2,action:f16,0.01,2,751,1,751,32/11,32/11 action,1 +pendulum/action__f16/1.0/seed0,action:f16,1.0,0,70086,1,70086,0/0,0/0 action,1 +pendulum/action__f16/1.0/seed1,action:f16,1.0,1,69306,1,69306,0/0,0/0 action,1 +pendulum/action__f16/1.0/seed2,action:f16,1.0,2,70621,1,70621,0/0,0/0 action,1 +pendulum/action__f16/one/seed0,action:f16,one,0,1,1,1,3251/0,3251/0 action,1 +pendulum/action__f16/one/seed1,action:f16,one,1,1,1,1,3249/0,3249/0 action,1 +pendulum/action__f16/one/seed2,action:f16,one,2,1,1,1,3249/0,3249/0 action,1 +pendulum/action__stale/0.01/seed0,action:stale,0.01,0,817,1,817,5/7,5/7 action,1 +pendulum/action__stale/0.01/seed1,action:stale,0.01,1,769,1,769,5/7,5/7 action,1 +pendulum/action__stale/0.01/seed2,action:stale,0.01,2,802,1,802,32/11,32/11 action,1 +pendulum/action__stale/1.0/seed0,action:stale,1.0,0,77023,1,77023,0/0,0/0 action,1 +pendulum/action__stale/1.0/seed1,action:stale,1.0,1,74754,1,74754,0/0,0/0 action,1 +pendulum/action__stale/1.0/seed2,action:stale,1.0,2,78333,1,78333,0/0,0/0 action,1 +pendulum/action__stale/one/seed0,action:stale,one,0,1,1,1,3251/0,3251/0 action,1 +pendulum/action__stale/one/seed1,action:stale,one,1,1,1,1,3249/0,3249/0 action,1 +pendulum/action__stale/one/seed2,action:stale,one,2,1,1,1,3249/0,3249/0 action,1 +pendulum/action__swap/0.01/seed0,action:swap,0.01,0,976,1,976,5/7,5/7 action,1 +pendulum/action__swap/0.01/seed1,action:swap,0.01,1,979,1,979,5/7,5/7 action,1 +pendulum/action__swap/0.01/seed2,action:swap,0.01,2,987,1,987,5/7,5/7 action,1 +pendulum/action__swap/1.0/seed0,action:swap,1.0,0,85056,1,85056,0/0,0/0 action,1 +pendulum/action__swap/1.0/seed1,action:swap,1.0,1,84269,1,84269,0/0,0/0 action,1 +pendulum/action__swap/1.0/seed2,action:swap,1.0,2,82169,1,82169,0/0,0/0 action,1 +pendulum/action__swap/one/seed0,action:swap,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/action__swap/one/seed1,action:swap,one,1,1,1,1,3249/0,3249/0 action,1 +pendulum/action__swap/one/seed2,action:swap,one,2,1,1,1,3249/0,3249/0 action,1 +pendulum/action__zero/0.01/seed0,action:zero,0.01,0,1068,1,1068,5/7,5/7 action,1 +pendulum/action__zero/0.01/seed1,action:zero,0.01,1,1068,1,1068,5/7,5/7 action,1 +pendulum/action__zero/0.01/seed2,action:zero,0.01,2,1068,1,1068,5/7,5/7 action,1 +pendulum/action__zero/1.0/seed0,action:zero,1.0,0,102400,1,102400,0/0,0/0 action,1 +pendulum/action__zero/1.0/seed1,action:zero,1.0,1,102400,1,102400,0/0,0/0 action,1 +pendulum/action__zero/1.0/seed2,action:zero,1.0,2,102400,1,102400,0/0,0/0 action,1 +pendulum/action__zero/one/seed0,action:zero,one,0,1,1,1,3249/0,3249/0 action,1 +pendulum/action__zero/one/seed1,action:zero,one,1,1,1,1,3249/0,3249/0 action,1 +pendulum/action__zero/one/seed2,action:zero,one,2,1,1,1,3249/0,3249/0 action,1 +pendulum/delay-1ms/1.0/seed0,delay-1ms,1.0,0,0,0,0,,,1 +pendulum/delay-1ms/1.0/seed1,delay-1ms,1.0,1,0,0,0,,,1 +pendulum/delay-1ms/1.0/seed2,delay-1ms,1.0,2,0,0,0,,,1 +pendulum/final-obs__f16/0.01/seed0,final-obs:f16,0.01,0,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__f16/0.01/seed1,final-obs:f16,0.01,1,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__f16/0.01/seed2,final-obs:f16,0.01,2,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__f16/1.0/seed0,final-obs:f16,1.0,0,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__f16/1.0/seed1,final-obs:f16,1.0,1,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__f16/1.0/seed2,final-obs:f16,1.0,2,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__f16/one/seed0,final-obs:f16,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__f16/one/seed1,final-obs:f16,one,1,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__f16/one/seed2,final-obs:f16,one,2,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__stale/0.01/seed0,final-obs:stale,0.01,0,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__stale/0.01/seed1,final-obs:stale,0.01,1,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__stale/0.01/seed2,final-obs:stale,0.01,2,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__stale/1.0/seed0,final-obs:stale,1.0,0,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__stale/1.0/seed1,final-obs:stale,1.0,1,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__stale/1.0/seed2,final-obs:stale,1.0,2,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__stale/one/seed0,final-obs:stale,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__stale/one/seed1,final-obs:stale,one,1,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__stale/one/seed2,final-obs:stale,one,2,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__swap/0.01/seed0,final-obs:swap,0.01,0,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__swap/0.01/seed1,final-obs:swap,0.01,1,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__swap/0.01/seed2,final-obs:swap,0.01,2,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__swap/1.0/seed0,final-obs:swap,1.0,0,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__swap/1.0/seed1,final-obs:swap,1.0,1,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__swap/1.0/seed2,final-obs:swap,1.0,2,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__swap/one/seed0,final-obs:swap,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__swap/one/seed1,final-obs:swap,one,1,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__swap/one/seed2,final-obs:swap,one,2,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__zero/0.01/seed0,final-obs:zero,0.01,0,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__zero/0.01/seed1,final-obs:zero,0.01,1,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__zero/0.01/seed2,final-obs:zero,0.01,2,9,1,9,199/12,199/12 final,1 +pendulum/final-obs__zero/1.0/seed0,final-obs:zero,1.0,0,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__zero/1.0/seed1,final-obs:zero,1.0,1,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__zero/1.0/seed2,final-obs:zero,1.0,2,512,1,512,199/0,199/0 final,1 +pendulum/final-obs__zero/one/seed0,final-obs:zero,one,0,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__zero/one/seed1,final-obs:zero,one,1,1,1,1,3399/0,3399/0 final,1 +pendulum/final-obs__zero/one/seed2,final-obs:zero,one,2,1,1,1,3399/0,3399/0 final,1 +pendulum/log__drop-first/0.01/seed0,log:drop-first,0.01,0,2,0,0,,,1 +pendulum/log__drop-first/0.01/seed1,log:drop-first,0.01,1,2,0,0,,,1 +pendulum/log__drop-first/0.01/seed2,log:drop-first,0.01,2,2,0,0,,,1 +pendulum/log__drop-first/1.0/seed0,log:drop-first,1.0,0,512,0,0,,,1 +pendulum/log__drop-first/1.0/seed1,log:drop-first,1.0,1,512,0,0,,,1 +pendulum/log__drop-first/1.0/seed2,log:drop-first,1.0,2,512,0,0,,,1 +pendulum/log__drop-first/one/seed0,log:drop-first,one,0,1,0,0,,,1 +pendulum/log__drop-first/one/seed1,log:drop-first,one,1,1,0,0,,,1 +pendulum/log__drop-first/one/seed2,log:drop-first,one,2,1,0,0,,,1 +pendulum/log__short/0.01/seed0,log:short,0.01,0,2,0,0,,,1 +pendulum/log__short/0.01/seed1,log:short,0.01,1,2,0,0,,,1 +pendulum/log__short/0.01/seed2,log:short,0.01,2,2,0,0,,,1 +pendulum/log__short/1.0/seed0,log:short,1.0,0,512,0,0,,,1 +pendulum/log__short/1.0/seed1,log:short,1.0,1,512,0,0,,,1 +pendulum/log__short/1.0/seed2,log:short,1.0,2,512,0,0,,,1 +pendulum/log__short/one/seed0,log:short,one,0,1,0,0,,,1 +pendulum/log__short/one/seed1,log:short,one,1,1,0,0,,,1 +pendulum/log__short/one/seed2,log:short,one,2,1,0,0,,,1 +pendulum/none/1.0/seed0,none,1.0,0,0,0,0,,,1 +pendulum/none/1.0/seed1,none,1.0,1,0,0,0,,,1 +pendulum/none/1.0/seed2,none,1.0,2,0,0,0,,,1 +pendulum/obs__f16/0.01/seed0,obs:f16,0.01,0,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__f16/0.01/seed1,obs:f16,0.01,1,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__f16/0.01/seed2,obs:f16,0.01,2,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__f16/1.0/seed0,obs:f16,1.0,0,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__f16/1.0/seed1,obs:f16,1.0,1,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__f16/1.0/seed2,obs:f16,1.0,2,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__f16/one/seed0,obs:f16,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__f16/one/seed1,obs:f16,one,1,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__f16/one/seed2,obs:f16,one,2,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__stale/0.01/seed0,obs:stale,0.01,0,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__stale/0.01/seed1,obs:stale,0.01,1,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__stale/0.01/seed2,obs:stale,0.01,2,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__stale/1.0/seed0,obs:stale,1.0,0,102400,1,102384,1/0,1/0 obs,1 +pendulum/obs__stale/1.0/seed1,obs:stale,1.0,1,102400,1,102384,1/0,1/0 obs,1 +pendulum/obs__stale/1.0/seed2,obs:stale,1.0,2,102400,1,102384,1/0,1/0 obs,1 +pendulum/obs__stale/one/seed0,obs:stale,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__stale/one/seed1,obs:stale,one,1,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__stale/one/seed2,obs:stale,one,2,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__swap/0.01/seed0,obs:swap,0.01,0,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__swap/0.01/seed1,obs:swap,0.01,1,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__swap/0.01/seed2,obs:swap,0.01,2,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__swap/1.0/seed0,obs:swap,1.0,0,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__swap/1.0/seed1,obs:swap,1.0,1,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__swap/1.0/seed2,obs:swap,1.0,2,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__swap/one/seed0,obs:swap,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__swap/one/seed1,obs:swap,one,1,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__swap/one/seed2,obs:swap,one,2,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__zero/0.01/seed0,obs:zero,0.01,0,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__zero/0.01/seed1,obs:zero,0.01,1,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__zero/0.01/seed2,obs:zero,0.01,2,1068,1,1068,5/7,5/7 obs,1 +pendulum/obs__zero/1.0/seed0,obs:zero,1.0,0,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__zero/1.0/seed1,obs:zero,1.0,1,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__zero/1.0/seed2,obs:zero,1.0,2,102416,1,102400,0/0,0/0 obs,1 +pendulum/obs__zero/one/seed0,obs:zero,one,0,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__zero/one/seed1,obs:zero,one,1,1,1,1,3249/0,3249/0 obs,1 +pendulum/obs__zero/one/seed2,obs:zero,one,2,1,1,1,3249/0,3249/0 obs,1 +pendulum/reward__f16/0.01/seed0,reward:f16,0.01,0,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__f16/0.01/seed1,reward:f16,0.01,1,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__f16/0.01/seed2,reward:f16,0.01,2,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__f16/1.0/seed0,reward:f16,1.0,0,102385,1,102385,0/0,0/0 reward,1 +pendulum/reward__f16/1.0/seed1,reward:f16,1.0,1,102393,1,102393,0/0,0/0 reward,1 +pendulum/reward__f16/1.0/seed2,reward:f16,1.0,2,102378,1,102378,0/0,0/0 reward,1 +pendulum/reward__f16/one/seed0,reward:f16,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__f16/one/seed1,reward:f16,one,1,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__f16/one/seed2,reward:f16,one,2,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__stale/0.01/seed0,reward:stale,0.01,0,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__stale/0.01/seed1,reward:stale,0.01,1,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__stale/0.01/seed2,reward:stale,0.01,2,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__stale/1.0/seed0,reward:stale,1.0,0,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__stale/1.0/seed1,reward:stale,1.0,1,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__stale/1.0/seed2,reward:stale,1.0,2,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__stale/one/seed0,reward:stale,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__stale/one/seed1,reward:stale,one,1,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__stale/one/seed2,reward:stale,one,2,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__swap/0.01/seed0,reward:swap,0.01,0,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__swap/0.01/seed1,reward:swap,0.01,1,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__swap/0.01/seed2,reward:swap,0.01,2,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__swap/1.0/seed0,reward:swap,1.0,0,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__swap/1.0/seed1,reward:swap,1.0,1,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__swap/1.0/seed2,reward:swap,1.0,2,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__swap/one/seed0,reward:swap,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__swap/one/seed1,reward:swap,one,1,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__swap/one/seed2,reward:swap,one,2,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__zero/0.01/seed0,reward:zero,0.01,0,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__zero/0.01/seed1,reward:zero,0.01,1,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__zero/0.01/seed2,reward:zero,0.01,2,1068,1,1068,5/7,5/7 reward,1 +pendulum/reward__zero/1.0/seed0,reward:zero,1.0,0,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__zero/1.0/seed1,reward:zero,1.0,1,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__zero/1.0/seed2,reward:zero,1.0,2,102400,1,102400,0/0,0/0 reward,1 +pendulum/reward__zero/one/seed0,reward:zero,one,0,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__zero/one/seed1,reward:zero,one,1,1,1,1,3249/0,3249/0 reward,1 +pendulum/reward__zero/one/seed2,reward:zero,one,2,1,1,1,3249/0,3249/0 reward,1 +pendulum/step__fill/0.01/seed0,step:fill,0.01,0,1068,1,100458,5/7,5/7 reward,1 +pendulum/step__fill/0.01/seed1,step:fill,0.01,1,1068,1,100458,5/7,5/7 reward,1 +pendulum/step__fill/0.01/seed2,step:fill,0.01,2,1068,1,100458,5/7,5/7 reward,1 +pendulum/step__fill/1.0/seed0,step:fill,1.0,0,102400,1,102400,0/0,0/0 steps,1 +pendulum/step__fill/1.0/seed1,step:fill,1.0,1,102400,1,102400,0/0,0/0 steps,1 +pendulum/step__fill/1.0/seed2,step:fill,1.0,2,102400,1,102400,0/0,0/0 steps,1 +pendulum/step__fill/one/seed0,step:fill,one,0,1,1,3151,3249/0,3249/0 reward,1 +pendulum/step__fill/one/seed1,step:fill,one,1,1,1,3151,3249/0,3249/0 reward,1 +pendulum/step__fill/one/seed2,step:fill,one,2,1,1,3151,3249/0,3249/0 reward,1 +pendulum/terminated__spurious/0.01/seed0,terminated:spurious,0.01,0,1068,1,1068,5/7,5/7 end,1 +pendulum/terminated__spurious/0.01/seed1,terminated:spurious,0.01,1,1068,1,1068,5/7,5/7 end,1 +pendulum/terminated__spurious/0.01/seed2,terminated:spurious,0.01,2,1068,1,1068,5/7,5/7 end,1 +pendulum/terminated__spurious/1.0/seed0,terminated:spurious,1.0,0,102400,1,102400,0/0,0/0 end,1 +pendulum/terminated__spurious/1.0/seed1,terminated:spurious,1.0,1,102400,1,102400,0/0,0/0 end,1 +pendulum/terminated__spurious/1.0/seed2,terminated:spurious,1.0,2,102400,1,102400,0/0,0/0 end,1 +pendulum/terminated__spurious/one/seed0,terminated:spurious,one,0,1,1,1,3249/0,3249/0 end,1 +pendulum/terminated__spurious/one/seed1,terminated:spurious,one,1,1,1,1,3249/0,3249/0 end,1 +pendulum/terminated__spurious/one/seed2,terminated:spurious,one,2,1,1,1,3249/0,3249/0 end,1 +pendulum/truncated__as-term/0.01/seed0,truncated:as-term,0.01,0,9,1,9,199/12,199/12 limit,1 +pendulum/truncated__as-term/0.01/seed1,truncated:as-term,0.01,1,9,1,9,199/12,199/12 limit,1 +pendulum/truncated__as-term/0.01/seed2,truncated:as-term,0.01,2,9,1,9,199/12,199/12 limit,1 +pendulum/truncated__as-term/1.0/seed0,truncated:as-term,1.0,0,512,1,512,199/0,199/0 limit,1 +pendulum/truncated__as-term/1.0/seed1,truncated:as-term,1.0,1,512,1,512,199/0,199/0 limit,1 +pendulum/truncated__as-term/1.0/seed2,truncated:as-term,1.0,2,512,1,512,199/0,199/0 limit,1 +pendulum/truncated__as-term/one/seed0,truncated:as-term,one,0,1,1,1,3399/0,3399/0 limit,1 +pendulum/truncated__as-term/one/seed1,truncated:as-term,one,1,1,1,1,3399/0,3399/0 limit,1 +pendulum/truncated__as-term/one/seed2,truncated:as-term,one,2,1,1,1,3399/0,3399/0 limit,1 +pendulum/truncated__drop/0.01/seed0,truncated:drop,0.01,0,9,1,9,199/12,199/12 end,1 +pendulum/truncated__drop/0.01/seed1,truncated:drop,0.01,1,9,1,9,199/12,199/12 end,1 +pendulum/truncated__drop/0.01/seed2,truncated:drop,0.01,2,9,1,9,199/12,199/12 end,1 +pendulum/truncated__drop/1.0/seed0,truncated:drop,1.0,0,512,1,512,199/0,199/0 end,1 +pendulum/truncated__drop/1.0/seed1,truncated:drop,1.0,1,512,1,512,199/0,199/0 end,1 +pendulum/truncated__drop/1.0/seed2,truncated:drop,1.0,2,512,1,512,199/0,199/0 end,1 +pendulum/truncated__drop/one/seed0,truncated:drop,one,0,1,1,1,3399/0,3399/0 end,1 +pendulum/truncated__drop/one/seed1,truncated:drop,one,1,1,1,1,3399/0,3399/0 end,1 +pendulum/truncated__drop/one/seed2,truncated:drop,one,2,1,1,1,3399/0,3399/0 end,1 +pendulum/wire-float64/1.0/seed0,wire-float64,1.0,0,0,0,0,,,1 +pendulum/wire-float64/1.0/seed1,wire-float64,1.0,1,0,0,0,,,1 +pendulum/wire-float64/1.0/seed2,wire-float64,1.0,2,0,0,0,,,1 diff --git a/experiments/e55-step-ledger/results/load.txt b/experiments/e55-step-ledger/results/load.txt new file mode 100644 index 0000000..d5e590c --- /dev/null +++ b/experiments/e55-step-ledger/results/load.txt @@ -0,0 +1,2 @@ + 17:24:50 up 28 days, 6:26, 1 user, load average: 0.11, 1.21, 3.57 + 17:33:15 up 28 days, 6:35, 1 user, load average: 8.87, 8.82, 6.62 diff --git a/experiments/e55-step-ledger/results/registered.out b/experiments/e55-step-ledger/results/registered.out new file mode 100644 index 0000000..7118682 --- /dev/null +++ b/experiments/e55-step-ledger/results/registered.out @@ -0,0 +1,14 @@ + 17:24:50 up 28 days, 6:26, 1 user, load average: 0.11, 1.21, 3.57 +216 runs, 10 at a time +worker 0 done +worker 8 done +worker 9 done +worker 7 done +worker 5 done +worker 3 done +worker 1 done +worker 6 done +worker 4 done +worker 2 done + 17:33:15 up 28 days, 6:35, 1 user, load average: 8.87, 8.82, 6.62 +E55_DONE diff --git a/experiments/e55-step-ledger/results/runs.csv b/experiments/e55-step-ledger/results/runs.csv new file mode 100644 index 0000000..baffd4d --- /dev/null +++ b/experiments/e55-step-ledger/results/runs.csv @@ -0,0 +1,217 @@ +env,fault,dose,seed,cells,raises,rule,strict,weights,record,bridge,gain,last,episodes,sha,learn_s,raised,complete +pendulum,action:clip,0.01,0,564,0,0,,1,0,0,1002.3,-227.8,512,96d41f53,20.565,,1 +pendulum,action:clip,0.01,1,518,0,0,,1,0,0,1066.9,-183.0,512,f6c883c2,20.174,,1 +pendulum,action:clip,0.01,2,529,0,0,,1,0,0,989.3,-229.0,512,d6eebc9c,20.646,,1 +pendulum,action:clip,1.0,0,63653,0,0,,1,0,0,868.8,-369.2,512,9c89fd2e,20.305,,1 +pendulum,action:clip,1.0,1,63417,0,0,,1,0,0,863.6,-362.0,512,319f69be,20.678,,1 +pendulum,action:clip,1.0,2,58306,0,0,,1,0,0,861.9,-361.2,512,f19dd117,20.204,,1 +pendulum,action:clip,one,0,1,0,0,,1,0,0,1036.9,-187.9,512,46222c2a,20.59,,1 +pendulum,action:clip,one,1,1,0,0,,1,0,0,1020.2,-213.9,512,ba4ba4cc,20.637,,1 +pendulum,action:clip,one,2,1,0,0,,1,0,0,1008.9,-196.7,512,6ccbd988,20.389,,1 +pendulum,action:f16,0.01,0,746,0,0,,1,0,0,1027.3,-197.7,512,0b05a50a,20.493,,1 +pendulum,action:f16,0.01,1,707,0,0,,1,0,0,1041.3,-192.7,512,b4f02fd1,20.389,,1 +pendulum,action:f16,0.01,2,751,0,0,,1,0,0,1012.4,-195.5,512,d0384b0f,20.274,,1 +pendulum,action:f16,1.0,0,70086,0,0,,1,0,0,1028.9,-194.0,512,9f5f03a4,19.994,,1 +pendulum,action:f16,1.0,1,69306,0,0,,1,0,0,1058.6,-177.8,512,490d8a3f,20.349,,1 +pendulum,action:f16,1.0,2,70621,0,0,,1,0,0,1018.3,-192.1,512,42e1ffc3,20.16,,1 +pendulum,action:f16,one,0,1,0,0,,1,0,0,1013.2,-211.6,512,c86def24,20.535,,1 +pendulum,action:f16,one,1,1,0,0,,1,0,0,1046.5,-187.6,512,93384ed4,20.17,,1 +pendulum,action:f16,one,2,1,0,0,,1,0,0,1004.0,-201.6,512,32901a88,20.386,,1 +pendulum,action:stale,0.01,0,817,0,0,,1,0,0,1043.7,-187.1,512,523f9fdb,20.737,,1 +pendulum,action:stale,0.01,1,769,0,0,,1,0,0,1035.8,-214.2,512,a5ebc8a2,20.072,,1 +pendulum,action:stale,0.01,2,802,0,0,,1,0,0,1020.7,-195.0,512,02583893,20.136,,1 +pendulum,action:stale,1.0,0,77023,0,0,,1,0,0,1057.1,-193.6,512,bcbbc6fc,20.587,,1 +pendulum,action:stale,1.0,1,74754,0,0,,1,0,0,1076.9,-175.8,512,86d9270e,19.767,,1 +pendulum,action:stale,1.0,2,78333,0,0,,1,0,0,1046.9,-181.2,512,fb489c27,20.654,,1 +pendulum,action:stale,one,0,1,0,0,,1,0,0,1019.7,-205.2,512,aa1a75e2,20.07,,1 +pendulum,action:stale,one,1,1,0,0,,1,0,0,1046.1,-187.9,512,fd625f6e,20.93,,1 +pendulum,action:stale,one,2,1,0,0,,1,0,0,1001.5,-204.1,512,d00464b8,20.611,,1 +pendulum,action:swap,0.01,0,976,0,0,,1,0,0,1043.0,-196.3,512,e5ad4cab,20.377,,1 +pendulum,action:swap,0.01,1,979,0,0,,1,0,0,1038.2,-214.4,512,27dd148a,20.444,,1 +pendulum,action:swap,0.01,2,987,0,0,,1,0,0,1031.5,-208.3,512,a87eaf38,20.882,,1 +pendulum,action:swap,1.0,0,85056,0,1,,1,0,0,-46.1,-1244.2,512,889766d5,20.667,,1 +pendulum,action:swap,1.0,1,84269,0,1,,1,0,0,-35.3,-1223.7,512,fe95f321,20.254,,1 +pendulum,action:swap,1.0,2,82169,0,1,,1,0,0,-77.7,-1231.5,512,93086fa0,20.885,,1 +pendulum,action:swap,one,0,1,0,0,,1,0,0,1032.2,-192.6,512,9b3b2cd8,20.636,,1 +pendulum,action:swap,one,1,1,0,0,,1,0,0,1039.2,-194.8,512,c5240226,19.998,,1 +pendulum,action:swap,one,2,1,0,0,,1,0,0,1012.1,-193.6,512,7a44221a,20.662,,1 +pendulum,action:zero,0.01,0,1068,0,0,,1,0,0,1027.3,-209.8,512,ce2f2d84,20.697,,1 +pendulum,action:zero,0.01,1,1068,0,0,,1,0,0,1040.6,-195.1,512,414ad5c5,20.584,,1 +pendulum,action:zero,0.01,2,1068,0,0,,1,0,0,1025.7,-195.7,512,32a19fe7,20.637,,1 +pendulum,action:zero,1.0,0,102400,0,1,,1,0,0,10.5,-1214.6,512,fc69c04c,21.278,,1 +pendulum,action:zero,1.0,1,102400,0,1,,1,0,0,-4.3,-1219.7,512,b2feb45b,20.094,,1 +pendulum,action:zero,1.0,2,102400,0,1,,1,0,0,-15.9,-1232.7,512,9fd2c154,20.496,,1 +pendulum,action:zero,one,0,1,0,0,,1,0,0,1010.1,-214.8,512,f4f801a9,20.93,,1 +pendulum,action:zero,one,1,1,0,0,,1,0,0,1035.1,-199.0,512,476aadb0,19.991,,1 +pendulum,action:zero,one,2,1,0,0,,1,0,0,1002.7,-203.0,512,2d5728a9,20.015,,1 +pendulum,delay-1ms,1.0,0,0,0,0,,0,0,0,1025.1,-199.8,512,ec5b8226,30.331,,1 +pendulum,delay-1ms,1.0,1,0,0,0,,0,0,0,1025.3,-208.8,512,062e92e3,29.73,,1 +pendulum,delay-1ms,1.0,2,0,0,0,,0,0,0,959.6,-246.0,512,3a8d968f,29.664,,1 +pendulum,final-obs:f16,0.01,0,9,0,0,,1,0,0,990.4,-234.5,512,8b050884,20.543,,1 +pendulum,final-obs:f16,0.01,1,9,0,0,,1,0,0,1044.7,-189.3,512,d1fea845,20.45,,1 +pendulum,final-obs:f16,0.01,2,9,0,0,,1,0,0,996.8,-208.8,512,8d4f5d81,20.755,,1 +pendulum,final-obs:f16,1.0,0,512,0,0,,1,0,0,1033.4,-191.5,512,3aaf60a0,20.453,,1 +pendulum,final-obs:f16,1.0,1,512,0,0,,1,0,0,1047.4,-186.7,512,209d2f10,20.398,,1 +pendulum,final-obs:f16,1.0,2,512,0,0,,1,0,0,1020.4,-185.3,512,3b34c6f2,20.383,,1 +pendulum,final-obs:f16,one,0,1,0,0,,1,0,0,1025.5,-199.3,512,bf6e41a3,20.469,,1 +pendulum,final-obs:f16,one,1,1,0,0,,1,0,0,1037.4,-196.6,512,18d8ddf9,20.557,,1 +pendulum,final-obs:f16,one,2,1,0,0,,1,0,0,1003.1,-202.5,512,ab939388,20.857,,1 +pendulum,final-obs:stale,0.01,0,9,0,0,,1,0,0,1010.9,-214.0,512,a059213f,20.629,,1 +pendulum,final-obs:stale,0.01,1,9,0,0,,1,0,0,1039.5,-194.7,512,f99f790f,20.207,,1 +pendulum,final-obs:stale,0.01,2,9,0,0,,1,0,0,979.6,-228.3,512,e3e423de,20.474,,1 +pendulum,final-obs:stale,1.0,0,512,0,0,,1,0,0,963.9,-260.8,512,114f86a0,20.654,,1 +pendulum,final-obs:stale,1.0,1,512,0,0,,1,0,0,1021.3,-206.3,512,2a99cc39,20.436,,1 +pendulum,final-obs:stale,1.0,2,512,0,0,,1,0,0,1006.6,-201.2,512,64ddd2f4,21.143,,1 +pendulum,final-obs:stale,one,0,1,0,0,,1,0,0,1021.8,-203.0,512,2cd3a46f,20.484,,1 +pendulum,final-obs:stale,one,1,1,0,0,,1,0,0,1044.1,-190.0,512,3d2b49b0,20.497,,1 +pendulum,final-obs:stale,one,2,1,0,0,,1,0,0,1012.2,-193.4,512,9080a4bf,20.265,,1 +pendulum,final-obs:swap,0.01,0,9,0,0,,1,0,0,1025.7,-198.7,512,5bd0a6b2,20.595,,1 +pendulum,final-obs:swap,0.01,1,9,0,0,,1,0,0,1029.2,-199.0,512,c97adf0d,20.615,,1 +pendulum,final-obs:swap,0.01,2,9,0,0,,1,0,0,1010.8,-200.6,512,56c13906,20.584,,1 +pendulum,final-obs:swap,1.0,0,512,0,0,,1,0,0,1007.3,-212.6,512,3f8956ed,20.781,,1 +pendulum,final-obs:swap,1.0,1,512,0,0,,1,0,0,1028.5,-203.2,512,c81ec51a,20.556,,1 +pendulum,final-obs:swap,1.0,2,512,0,0,,1,0,0,1008.5,-202.0,512,1b6b79fd,19.876,,1 +pendulum,final-obs:swap,one,0,1,0,0,,1,0,0,1035.3,-189.5,512,4e8492f7,20.696,,1 +pendulum,final-obs:swap,one,1,1,0,0,,1,0,0,1035.4,-198.7,512,a85f2e22,20.874,,1 +pendulum,final-obs:swap,one,2,1,0,0,,1,0,0,1014.7,-191.0,512,8f41be4c,20.596,,1 +pendulum,final-obs:zero,0.01,0,9,0,0,,1,0,0,1035.7,-188.6,512,010adf87,20.562,,1 +pendulum,final-obs:zero,0.01,1,9,0,0,,1,0,0,1011.9,-217.2,512,fcdec6da,20.612,,1 +pendulum,final-obs:zero,0.01,2,9,0,0,,1,0,0,968.6,-239.8,512,4e34a328,19.869,,1 +pendulum,final-obs:zero,1.0,0,512,0,0,,1,0,0,908.5,-313.6,512,efd619dc,20.323,,1 +pendulum,final-obs:zero,1.0,1,512,0,0,,1,0,0,982.1,-253.0,512,b56b40ae,20.377,,1 +pendulum,final-obs:zero,1.0,2,512,0,0,,1,0,0,950.9,-258.0,512,226ab780,20.818,,1 +pendulum,final-obs:zero,one,0,1,0,0,,1,0,0,1017.8,-207.0,512,bf033c56,20.04,,1 +pendulum,final-obs:zero,one,1,1,0,0,,1,0,0,1031.6,-202.5,512,d0314318,20.413,,1 +pendulum,final-obs:zero,one,2,1,0,0,,1,0,0,989.6,-216.0,512,81a24d76,20.695,,1 +pendulum,log:drop-first,0.01,0,2,0,0,,0,1,1,1025.1,-199.8,512,ec5b8226,20.408,,1 +pendulum,log:drop-first,0.01,1,2,0,0,,0,1,1,1025.3,-208.8,512,062e92e3,20.136,,1 +pendulum,log:drop-first,0.01,2,2,0,0,,0,1,1,959.6,-246.0,512,3a8d968f,18.95,,1 +pendulum,log:drop-first,1.0,0,512,0,0,,0,1,1,1025.0,-196.5,512,ec5b8226,20.716,,1 +pendulum,log:drop-first,1.0,1,512,0,0,,0,1,1,1025.4,-205.4,512,062e92e3,20.596,,1 +pendulum,log:drop-first,1.0,2,512,0,0,,0,1,1,959.8,-242.6,512,3a8d968f,18.828,,1 +pendulum,log:drop-first,one,0,1,0,0,,0,1,1,1025.1,-199.8,512,ec5b8226,19.794,,1 +pendulum,log:drop-first,one,1,1,0,0,,0,1,1,1025.3,-208.8,512,062e92e3,19.859,,1 +pendulum,log:drop-first,one,2,1,0,0,,0,1,1,959.6,-246.0,512,3a8d968f,19.13,,1 +pendulum,log:short,0.01,0,2,0,0,,0,1,1,1025.1,-199.8,512,ec5b8226,20.326,,1 +pendulum,log:short,0.01,1,2,0,0,,0,1,1,1025.3,-208.8,512,062e92e3,20.347,,1 +pendulum,log:short,0.01,2,2,0,0,,0,1,1,959.6,-246.0,512,3a8d968f,18.755,,1 +pendulum,log:short,1.0,0,512,0,0,,0,1,1,1025.1,-199.8,512,ec5b8226,20.245,,1 +pendulum,log:short,1.0,1,512,0,0,,0,1,1,1025.3,-208.8,512,062e92e3,20.37,,1 +pendulum,log:short,1.0,2,512,0,0,,0,1,1,959.6,-246.0,512,3a8d968f,18.64,,1 +pendulum,log:short,one,0,1,0,0,,0,1,1,1025.1,-199.8,512,ec5b8226,19.832,,1 +pendulum,log:short,one,1,1,0,0,,0,1,1,1025.3,-208.8,512,062e92e3,20.728,,1 +pendulum,log:short,one,2,1,0,0,,0,1,1,959.6,-246.0,512,3a8d968f,18.654,,1 +pendulum,none,1.0,0,0,0,0,,0,0,0,1025.1,-199.8,512,ec5b8226,20.86,,1 +pendulum,none,1.0,1,0,0,0,,0,0,0,1025.3,-208.8,512,062e92e3,20.149,,1 +pendulum,none,1.0,2,0,0,0,,0,0,0,959.6,-246.0,512,3a8d968f,20.007,,1 +pendulum,obs:f16,0.01,0,1068,0,0,,1,0,0,1003.1,-216.6,512,8cdce0a6,20.594,,1 +pendulum,obs:f16,0.01,1,1068,0,0,,1,0,0,1037.2,-191.9,512,9efc34bd,20.083,,1 +pendulum,obs:f16,0.01,2,1068,0,0,,1,0,0,1023.2,-184.8,512,a291b401,20.501,,1 +pendulum,obs:f16,1.0,0,102416,0,0,,1,0,0,1019.9,-200.7,512,6bd93edb,20.993,,1 +pendulum,obs:f16,1.0,1,102416,0,0,,1,0,0,1047.4,-194.5,512,db006462,20.721,,1 +pendulum,obs:f16,1.0,2,102416,0,0,,1,0,0,987.4,-214.1,512,0655bd23,20.319,,1 +pendulum,obs:f16,one,0,1,0,0,,1,0,0,1003.9,-220.9,512,d1484e30,20.828,,1 +pendulum,obs:f16,one,1,1,0,0,,1,0,0,1042.8,-191.3,512,7809451b,20.613,,1 +pendulum,obs:f16,one,2,1,0,0,,1,0,0,1012.5,-193.1,512,3026d8df,20.095,,1 +pendulum,obs:stale,0.01,0,1068,0,0,,1,0,0,1026.5,-201.1,512,0cbb3296,20.301,,1 +pendulum,obs:stale,0.01,1,1068,0,0,,1,0,0,1023.7,-208.3,512,2a0550ff,20.14,,1 +pendulum,obs:stale,0.01,2,1068,0,0,,1,0,0,1027.2,-191.2,512,08b18278,20.147,,1 +pendulum,obs:stale,1.0,0,102400,0,0,,1,0,0,971.8,-270.1,512,bd9261b4,20.747,,1 +pendulum,obs:stale,1.0,1,102400,0,0,,1,0,0,1056.3,-187.7,512,3b8e0f67,20.544,,1 +pendulum,obs:stale,1.0,2,102400,0,0,,1,0,0,1051.2,-186.1,512,b2634e34,20.333,,1 +pendulum,obs:stale,one,0,1,0,0,,1,0,0,992.2,-232.6,512,765a1ee0,20.704,,1 +pendulum,obs:stale,one,1,1,0,0,,1,0,0,995.9,-238.2,512,12613a2a,20.751,,1 +pendulum,obs:stale,one,2,1,0,0,,1,0,0,1005.0,-200.6,512,978b430d,21.01,,1 +pendulum,obs:swap,0.01,0,1068,0,0,,1,0,0,1044.0,-200.0,512,f6cb32fa,20.708,,1 +pendulum,obs:swap,0.01,1,1068,0,0,,1,0,0,1037.0,-212.2,512,deeb971c,20.105,,1 +pendulum,obs:swap,0.01,2,1068,0,0,,1,0,0,987.8,-244.6,512,407d9729,20.49,,1 +pendulum,obs:swap,1.0,0,102416,0,1,,1,0,0,12.4,-1217.5,512,516c7ce6,21.18,,1 +pendulum,obs:swap,1.0,1,102416,0,1,,1,0,0,60.6,-1219.5,512,ee7dcd35,20.598,,1 +pendulum,obs:swap,1.0,2,102416,0,1,,1,0,0,-13.4,-1214.5,512,220ba53a,20.141,,1 +pendulum,obs:swap,one,0,1,0,0,,1,0,0,1016.0,-208.8,512,3fb58b16,20.436,,1 +pendulum,obs:swap,one,1,1,0,0,,1,0,0,1047.2,-186.8,512,9e1f81cd,20.335,,1 +pendulum,obs:swap,one,2,1,0,0,,1,0,0,998.8,-206.9,512,bfb37b1a,20.166,,1 +pendulum,obs:zero,0.01,0,1068,0,0,,1,0,0,1013.1,-230.2,512,ed34c167,20.291,,1 +pendulum,obs:zero,0.01,1,1068,0,0,,1,0,0,1007.0,-216.9,512,3f052f94,20.381,,1 +pendulum,obs:zero,0.01,2,1068,0,0,,1,0,0,1014.7,-210.3,512,7b02c343,20.56,,1 +pendulum,obs:zero,1.0,0,102416,0,1,,1,0,0,10.5,-1214.6,512,6f23c454,21.114,,1 +pendulum,obs:zero,1.0,1,102416,0,1,,1,0,0,-4.3,-1219.7,512,bfbe3209,20.327,,1 +pendulum,obs:zero,1.0,2,102416,0,1,,1,0,0,-15.9,-1232.7,512,e1dbe226,20.55,,1 +pendulum,obs:zero,one,0,1,0,0,,1,0,0,1031.5,-193.3,512,e2f06a8f,20.411,,1 +pendulum,obs:zero,one,1,1,0,0,,1,0,0,1036.7,-197.4,512,9be2e057,20.368,,1 +pendulum,obs:zero,one,2,1,0,0,,1,0,0,1014.9,-190.7,512,2f7f6acc,19.845,,1 +pendulum,reward:f16,0.01,0,1068,0,0,,1,0,0,1024.1,-200.8,512,957547ea,20.716,,1 +pendulum,reward:f16,0.01,1,1068,0,0,,1,0,0,1040.1,-188.9,512,ff01fa2a,20.748,,1 +pendulum,reward:f16,0.01,2,1068,0,0,,1,0,0,1000.6,-207.3,512,1404abe1,20.375,,1 +pendulum,reward:f16,1.0,0,102385,0,0,,1,0,0,1018.1,-205.8,512,1d482f24,20.635,,1 +pendulum,reward:f16,1.0,1,102393,0,0,,1,0,0,987.4,-246.8,512,add3c078,21.022,,1 +pendulum,reward:f16,1.0,2,102378,0,0,,1,0,0,1005.9,-205.1,512,c6599770,20.515,,1 +pendulum,reward:f16,one,0,1,0,0,,1,0,0,1012.7,-212.2,512,e95cad4d,20.248,,1 +pendulum,reward:f16,one,1,1,0,0,,1,0,0,1028.8,-205.3,512,833fe81c,20.382,,1 +pendulum,reward:f16,one,2,1,0,0,,1,0,0,1007.6,-198.1,512,9bbbf32e,20.475,,1 +pendulum,reward:stale,0.01,0,1068,0,0,,1,1,0,1021.3,-201.5,512,c3ecfd3a,20.43,,1 +pendulum,reward:stale,0.01,1,1068,0,0,,1,1,0,1046.9,-186.4,512,3d6114f7,20.488,,1 +pendulum,reward:stale,0.01,2,1068,0,0,,1,1,0,1007.4,-202.1,512,70133a54,20.337,,1 +pendulum,reward:stale,1.0,0,102400,0,0,,1,1,0,1013.0,-201.7,512,982f942a,20.331,,1 +pendulum,reward:stale,1.0,1,102400,0,0,,1,1,0,1048.9,-187.4,512,0cddc6e3,20.407,,1 +pendulum,reward:stale,1.0,2,102400,0,0,,1,1,0,1014.2,-191.7,512,87c6042c,20.712,,1 +pendulum,reward:stale,one,0,1,0,0,,1,1,0,1016.9,-207.9,512,755acd6f,20.452,,1 +pendulum,reward:stale,one,1,1,0,0,,1,0,0,1041.5,-192.6,512,29a4a30e,20.636,,1 +pendulum,reward:stale,one,2,1,0,0,,1,0,0,1006.1,-199.5,512,8b012764,20.283,,1 +pendulum,reward:swap,0.01,0,1068,0,0,,1,1,0,1027.2,-193.7,512,c5bef941,20.339,,1 +pendulum,reward:swap,0.01,1,1068,0,0,,1,1,0,1061.2,-185.5,512,49df93d6,20.943,,1 +pendulum,reward:swap,0.01,2,1068,0,0,,1,1,0,985.0,-220.7,512,1f2b8986,19.842,,1 +pendulum,reward:swap,1.0,0,102400,0,1,,1,1,0,10.0,-1213.8,512,f15ee7af,20.717,,1 +pendulum,reward:swap,1.0,1,102400,0,1,,1,1,0,72.1,-1173.4,512,333cd4cd,20.626,,1 +pendulum,reward:swap,1.0,2,102400,0,1,,1,1,0,-147.4,-1353.2,512,5a1c7763,20.831,,1 +pendulum,reward:swap,one,0,1,0,0,,1,1,0,1014.3,-210.5,512,67f6552c,20.654,,1 +pendulum,reward:swap,one,1,1,0,0,,1,1,0,1022.3,-211.7,512,38b7ad55,20.415,,1 +pendulum,reward:swap,one,2,1,0,0,,1,0,0,1016.7,-188.9,512,dd11b659,20.458,,1 +pendulum,reward:zero,0.01,0,1068,0,0,,1,1,0,1009.4,-196.9,512,11d1d7dc,20.766,,1 +pendulum,reward:zero,0.01,1,1068,0,0,,1,1,0,1023.4,-196.3,512,e90c654b,20.778,,1 +pendulum,reward:zero,0.01,2,1068,0,0,,1,1,0,982.4,-216.0,512,57614cea,20.474,,1 +pendulum,reward:zero,1.0,0,102400,0,1,,1,1,0,0.0,0.0,512,f3c1c4c3,20.641,,1 +pendulum,reward:zero,1.0,1,102400,0,1,,1,1,0,0.0,0.0,512,d483503e,19.952,,1 +pendulum,reward:zero,1.0,2,102400,0,1,,1,1,0,0.0,0.0,512,092cb09b,20.62,,1 +pendulum,reward:zero,one,0,1,0,0,,1,1,0,1021.3,-203.5,512,e42c5fa8,20.363,,1 +pendulum,reward:zero,one,1,1,0,0,,1,0,0,1025.0,-209.0,512,b0cdde97,20.792,,1 +pendulum,reward:zero,one,2,1,0,0,,1,0,0,1000.8,-204.8,512,77163c4c,20.257,,1 +pendulum,step:fill,0.01,0,1068,0,0,,1,1,0,1032.1,-188.7,496,32ba03dd,20.191,,1 +pendulum,step:fill,0.01,1,1068,0,0,,1,1,0,1059.6,-199.4,496,c201aca0,20.287,,1 +pendulum,step:fill,0.01,2,1068,0,0,,1,1,0,996.5,-206.3,496,b14b76d2,19.893,,1 +pendulum,step:fill,1.0,0,102400,0,1,,1,0,0,,,0,7c353631,18.361,,1 +pendulum,step:fill,1.0,1,102400,0,1,,1,0,0,,,0,d303871d,18.855,,1 +pendulum,step:fill,1.0,2,102400,0,1,,1,0,0,,,0,36f6d91e,18.523,,1 +pendulum,step:fill,one,0,1,0,0,,1,1,0,1016.2,-208.6,511,1426c402,19.933,,1 +pendulum,step:fill,one,1,1,0,0,,1,1,0,1021.7,-212.3,511,1b86e0d9,20.638,,1 +pendulum,step:fill,one,2,1,0,0,,1,1,0,1011.2,-194.4,511,e2d1cee4,20.871,,1 +pendulum,terminated:spurious,0.01,0,1068,0,1,,1,1,0,195.6,-178.6,1571,bfaf6961,20.615,,1 +pendulum,terminated:spurious,0.01,1,1068,0,1,,1,1,0,242.7,-142.4,1571,d166081a,20.513,,1 +pendulum,terminated:spurious,0.01,2,1068,0,1,,1,1,0,236.3,-152.5,1571,66d62461,20.608,,1 +pendulum,terminated:spurious,1.0,0,102400,0,1,,1,1,0,-2.9,-6.5,102400,f885d396,21.815,,1 +pendulum,terminated:spurious,1.0,1,102400,0,1,,1,1,0,-2.8,-6.3,102400,ef551e57,21.687,,1 +pendulum,terminated:spurious,1.0,2,102400,0,1,,1,1,0,-2.1,-6.0,102400,1611c255,21.308,,1 +pendulum,terminated:spurious,one,0,1,0,0,,1,1,0,1014.4,-210.5,513,44d6e670,20.366,,1 +pendulum,terminated:spurious,one,1,1,0,0,,1,1,0,1040.4,-193.6,513,ad8c101a,20.716,,1 +pendulum,terminated:spurious,one,2,1,0,0,,1,1,0,1012.5,-193.1,513,b9f30a62,20.396,,1 +pendulum,truncated:as-term,0.01,0,9,0,0,,1,0,0,999.9,-224.4,512,9ea56785,20.515,,1 +pendulum,truncated:as-term,0.01,1,9,0,0,,1,0,0,1034.0,-195.1,512,5e225449,20.474,,1 +pendulum,truncated:as-term,0.01,2,9,0,0,,1,0,0,1001.8,-206.6,512,8ffa7e42,19.974,,1 +pendulum,truncated:as-term,1.0,0,512,0,0,,1,0,0,1017.5,-204.6,512,57eb5601,20.741,,1 +pendulum,truncated:as-term,1.0,1,512,0,0,,1,0,0,997.2,-237.9,512,2c8a0d7a,19.935,,1 +pendulum,truncated:as-term,1.0,2,512,0,0,,1,0,0,1000.1,-208.8,512,3292a6ce,20.243,,1 +pendulum,truncated:as-term,one,0,1,0,0,,1,0,0,1037.8,-187.0,512,1778bb25,20.138,,1 +pendulum,truncated:as-term,one,1,1,0,0,,1,0,0,1039.2,-194.8,512,31459006,20.312,,1 +pendulum,truncated:as-term,one,2,1,0,0,,1,0,0,1005.7,-200.0,512,bb2c9d55,20.33,,1 +pendulum,truncated:drop,0.01,0,9,0,0,,1,1,0,1072.0,-194.0,503,bfafb0fb,20.589,,1 +pendulum,truncated:drop,0.01,1,9,0,0,,1,1,0,1067.8,-197.2,503,db17509e,20.563,,1 +pendulum,truncated:drop,0.01,2,9,0,0,,1,1,0,1018.8,-222.3,503,8c5d0450,20.523,,1 +pendulum,truncated:drop,1.0,0,512,0,1,,1,1,0,,,0,1a833295,20.466,,1 +pendulum,truncated:drop,1.0,1,512,0,1,,1,1,0,,,0,c077fca8,20.671,,1 +pendulum,truncated:drop,1.0,2,512,0,1,,1,1,0,,,0,85691232,20.145,,1 +pendulum,truncated:drop,one,0,1,0,0,,1,1,0,1032.8,-192.0,511,754e49b9,20.076,,1 +pendulum,truncated:drop,one,1,1,0,0,,1,1,0,1008.6,-225.5,511,b21d8718,20.183,,1 +pendulum,truncated:drop,one,2,1,0,0,,1,1,0,1004.0,-201.6,511,4bc2ef7b,19.847,,1 +pendulum,wire-float64,1.0,0,0,0,0,,0,0,0,1025.1,-199.8,512,ec5b8226,20.351,,1 +pendulum,wire-float64,1.0,1,0,0,0,,0,0,0,1025.3,-208.8,512,062e92e3,19.837,,1 +pendulum,wire-float64,1.0,2,0,0,0,,0,0,0,959.6,-246.0,512,3a8d968f,19.963,,1 diff --git a/experiments/e55-step-ledger/results/runs.jsonl b/experiments/e55-step-ledger/results/runs.jsonl new file mode 100644 index 0000000..949f01b --- /dev/null +++ b/experiments/e55-step-ledger/results/runs.jsonl @@ -0,0 +1,216 @@ +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 564 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 564, "dose": "0.01", "fault": "action:clip", "first": [32, 11], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:clip", "learn_s": 20.565, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "96d41f53f22400b33876cf75f798b3b5b7fa73ab3fb37fdda78db5f65f9829b4"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"96d41f53f22400b33876cf75f798b3b5b7fa73ab3fb37fdda78db5f65f9829b4\", \"learn_s\": 20.565, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 518 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 518, "dose": "0.01", "fault": "action:clip", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:clip", "learn_s": 20.174, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f6c883c2e50c9edb2b55dfcd8b754f5e9ef8c04d59f9970c5650a6ccb9404571"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"f6c883c2e50c9edb2b55dfcd8b754f5e9ef8c04d59f9970c5650a6ccb9404571\", \"learn_s\": 20.174, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 529 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 529, "dose": "0.01", "fault": "action:clip", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:clip", "learn_s": 20.646, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d6eebc9ce2d2b4eddc7624f5a084754a8075e5967e0044e432b4adfd22930b5d"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"d6eebc9ce2d2b4eddc7624f5a084754a8075e5967e0044e432b4adfd22930b5d\", \"learn_s\": 20.646, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 63653 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 63653, "dose": "1.0", "fault": "action:clip", "first": [0, 3], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:clip", "learn_s": 20.305, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9c89fd2ef5db4c246d990daef84dd670ca0424f7d4c3a42fbe5ae3e63e529c4d"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"9c89fd2ef5db4c246d990daef84dd670ca0424f7d4c3a42fbe5ae3e63e529c4d\", \"learn_s\": 20.305, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 63417 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 63417, "dose": "1.0", "fault": "action:clip", "first": [0, 2], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:clip", "learn_s": 20.678, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "319f69beae8ffbc924e1a45df5b82928042b55ee0c6e68ed5e8bf84cc3bc3a91"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"319f69beae8ffbc924e1a45df5b82928042b55ee0c6e68ed5e8bf84cc3bc3a91\", \"learn_s\": 20.678, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 58306 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 58306, "dose": "1.0", "fault": "action:clip", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:clip", "learn_s": 20.204, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f19dd117a422727abe12ec9962703059eadb7bbcef5e3a912cd9e1e8e2868cbe"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"f19dd117a422727abe12ec9962703059eadb7bbcef5e3a912cd9e1e8e2868cbe\", \"learn_s\": 20.204, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 1, "dose": "one", "fault": "action:clip", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:clip", "learn_s": 20.59, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "46222c2ac9e9ef6c837bf29ced5a6d51cf19ed5b1fc397829919ce6f3059f43c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"46222c2ac9e9ef6c837bf29ced5a6d51cf19ed5b1fc397829919ce6f3059f43c\", \"learn_s\": 20.59, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 1, "dose": "one", "fault": "action:clip", "first": [3252, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:clip", "learn_s": 20.637, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ba4ba4ccf2224b64a173705cdabf84ece11ee1be7ce53785e8f2d33ea1f68747"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"ba4ba4ccf2224b64a173705cdabf84ece11ee1be7ce53785e8f2d33ea1f68747\", \"learn_s\": 20.637, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:clip", "fault_json": {"cells": 1, "dose": "one", "fault": "action:clip", "first": [3256, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:clip", "learn_s": 20.389, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "6ccbd98824ae0f2535858c7d445d7cac78ee1f73546411face32e68cef86cbca"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:clip\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"6ccbd98824ae0f2535858c7d445d7cac78ee1f73546411face32e68cef86cbca\", \"learn_s\": 20.389, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 746 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 746, "dose": "0.01", "fault": "action:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:f16", "learn_s": 20.493, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "0b05a50a2214f78ddd8253db5cb3d1e09b64eb5b7f81d1df812b806fab3d1e31"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"0b05a50a2214f78ddd8253db5cb3d1e09b64eb5b7f81d1df812b806fab3d1e31\", \"learn_s\": 20.493, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 707 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 707, "dose": "0.01", "fault": "action:f16", "first": [32, 11], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:f16", "learn_s": 20.389, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b4f02fd1092798ded1d6b3838885188b18409718e11d62a929596b43a2ac78d0"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"b4f02fd1092798ded1d6b3838885188b18409718e11d62a929596b43a2ac78d0\", \"learn_s\": 20.389, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 751 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 751, "dose": "0.01", "fault": "action:f16", "first": [32, 11], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:f16", "learn_s": 20.274, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d0384b0f2944f29c914582039cc3695a4681332f6eede0bd4afdeb67fdf0cb09"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"d0384b0f2944f29c914582039cc3695a4681332f6eede0bd4afdeb67fdf0cb09\", \"learn_s\": 20.274, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 70086 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 70086, "dose": "1.0", "fault": "action:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:f16", "learn_s": 19.994, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9f5f03a4a7cf8e897468d10d93cd29a677cb328249f859b656d7ac281061559b"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"9f5f03a4a7cf8e897468d10d93cd29a677cb328249f859b656d7ac281061559b\", \"learn_s\": 19.994, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 69306 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 69306, "dose": "1.0", "fault": "action:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:f16", "learn_s": 20.349, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "490d8a3f2a2b48ffc85a44f6364145c84691790c3fa3425e3af05938c2197b2e"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"490d8a3f2a2b48ffc85a44f6364145c84691790c3fa3425e3af05938c2197b2e\", \"learn_s\": 20.349, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 70621 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 70621, "dose": "1.0", "fault": "action:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:f16", "learn_s": 20.16, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "42e1ffc388c7b5e931a24a0ac7046be883b0ac48b362af99c2387590a32010a2"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"42e1ffc388c7b5e931a24a0ac7046be883b0ac48b362af99c2387590a32010a2\", \"learn_s\": 20.16, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "action:f16", "first": [3251, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:f16", "learn_s": 20.535, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c86def24127ae86f70f35418cc10c779b26a2ead72472da4cd40bac0157fc19d"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"c86def24127ae86f70f35418cc10c779b26a2ead72472da4cd40bac0157fc19d\", \"learn_s\": 20.535, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "action:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:f16", "learn_s": 20.17, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "93384ed4dd2ea65601acedacac83a175e8ab3c9a6c3bbb893f97c84e3f834247"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"93384ed4dd2ea65601acedacac83a175e8ab3c9a6c3bbb893f97c84e3f834247\", \"learn_s\": 20.17, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "action:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:f16", "learn_s": 20.386, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "32901a883850194eb724338ccf14d10e48767ede2394cac9b6e24546a680239a"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:f16\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"32901a883850194eb724338ccf14d10e48767ede2394cac9b6e24546a680239a\", \"learn_s\": 20.386, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 817 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 817, "dose": "0.01", "fault": "action:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:stale", "learn_s": 20.737, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "523f9fdb055224b01e6089af237246b60960e2cb006c0176f1e1ab741b2e502b"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"523f9fdb055224b01e6089af237246b60960e2cb006c0176f1e1ab741b2e502b\", \"learn_s\": 20.737, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 769 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 769, "dose": "0.01", "fault": "action:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:stale", "learn_s": 20.072, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "a5ebc8a21cdd415daa065cdf5ccc6bff4dad08c3e59136585e30a5a62aee5024"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"a5ebc8a21cdd415daa065cdf5ccc6bff4dad08c3e59136585e30a5a62aee5024\", \"learn_s\": 20.072, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 802 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 802, "dose": "0.01", "fault": "action:stale", "first": [32, 11], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:stale", "learn_s": 20.136, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "025838930fde0b281de7d48a1c1c9cfad23ab0252025added2e7233cc974367b"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"025838930fde0b281de7d48a1c1c9cfad23ab0252025added2e7233cc974367b\", \"learn_s\": 20.136, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 77023 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 77023, "dose": "1.0", "fault": "action:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:stale", "learn_s": 20.587, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bcbbc6fc9a71d6943b283211dc799850c89633f63bf5c569df694129a6296cd4"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"bcbbc6fc9a71d6943b283211dc799850c89633f63bf5c569df694129a6296cd4\", \"learn_s\": 20.587, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 74754 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 74754, "dose": "1.0", "fault": "action:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:stale", "learn_s": 19.767, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "86d9270e81df1bf64caeecb07fa202417463cb2f7ea9f1e5d751494d9e41a540"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"86d9270e81df1bf64caeecb07fa202417463cb2f7ea9f1e5d751494d9e41a540\", \"learn_s\": 19.767, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 78333 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 78333, "dose": "1.0", "fault": "action:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:stale", "learn_s": 20.654, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "fb489c27538cd52c51aaf38f8f7eef8f77d4f87085eaa9f36b6ee9ac46f43200"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"fb489c27538cd52c51aaf38f8f7eef8f77d4f87085eaa9f36b6ee9ac46f43200\", \"learn_s\": 20.654, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "action:stale", "first": [3251, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:stale", "learn_s": 20.07, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "aa1a75e2c0527e79b38dd9e7f3370c56521baa5489a297ce62c959b719e2e9df"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"aa1a75e2c0527e79b38dd9e7f3370c56521baa5489a297ce62c959b719e2e9df\", \"learn_s\": 20.07, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "action:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:stale", "learn_s": 20.93, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "fd625f6eecbba9d9efaa670aabc740842a78d2258794a4b5b23a1986f841a46c"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"fd625f6eecbba9d9efaa670aabc740842a78d2258794a4b5b23a1986f841a46c\", \"learn_s\": 20.93, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "action:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:stale", "learn_s": 20.611, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d00464b8c9908106cf3634b2563ba0834a9a6b2e0979067ef12c0a57ac166a7a"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:stale\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"d00464b8c9908106cf3634b2563ba0834a9a6b2e0979067ef12c0a57ac166a7a\", \"learn_s\": 20.611, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 976 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 976, "dose": "0.01", "fault": "action:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:swap", "learn_s": 20.377, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e5ad4cabb6cfec4d9794863d9d373482591b0bf26aff2ac081d69cccb49b6c61"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"e5ad4cabb6cfec4d9794863d9d373482591b0bf26aff2ac081d69cccb49b6c61\", \"learn_s\": 20.377, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 979 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 979, "dose": "0.01", "fault": "action:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:swap", "learn_s": 20.444, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "27dd148af798ee12689b46b27433eb1e7b6aeef555ce3fa458fec499142b8c45"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"27dd148af798ee12689b46b27433eb1e7b6aeef555ce3fa458fec499142b8c45\", \"learn_s\": 20.444, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 987 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 987, "dose": "0.01", "fault": "action:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:swap", "learn_s": 20.882, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "a87eaf38a3569159d7a3567af79cd6016f48abe65bdcec7eea8a58a388083566"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"a87eaf38a3569159d7a3567af79cd6016f48abe65bdcec7eea8a58a388083566\", \"learn_s\": 20.882, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 85056 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 85056, "dose": "1.0", "fault": "action:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:swap", "learn_s": 20.667, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "889766d5f40475c64d20872fbbb4f75878de477b4f8ace87a6e4b8e3739ca7ff"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"889766d5f40475c64d20872fbbb4f75878de477b4f8ace87a6e4b8e3739ca7ff\", \"learn_s\": 20.667, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 84269 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 84269, "dose": "1.0", "fault": "action:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:swap", "learn_s": 20.254, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "fe95f321add54abfd8136bf8d806db1ca28810775f43ce6dd5d797c626df4527"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"fe95f321add54abfd8136bf8d806db1ca28810775f43ce6dd5d797c626df4527\", \"learn_s\": 20.254, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 82169 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 82169, "dose": "1.0", "fault": "action:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:swap", "learn_s": 20.885, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "93086fa02b1a5b436c8721f57926a53bc66eebf3a2bc7aa3443220701d2d41ac"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"93086fa02b1a5b436c8721f57926a53bc66eebf3a2bc7aa3443220701d2d41ac\", \"learn_s\": 20.885, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "action:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:swap", "learn_s": 20.636, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9b3b2cd817cf4966e3248067ba7b8472acd8bf433ca00c631cfaf51748a2a57e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"9b3b2cd817cf4966e3248067ba7b8472acd8bf433ca00c631cfaf51748a2a57e\", \"learn_s\": 20.636, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "action:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:swap", "learn_s": 19.998, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c52402263b502f74ca980357deeccf55df10545ca76978f20249b588ee7140d5"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"c52402263b502f74ca980357deeccf55df10545ca76978f20249b588ee7140d5\", \"learn_s\": 19.998, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "action:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:swap", "learn_s": 20.662, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "7a44221a59d68ea5bcf9070835adc80b5b7ae9012541f9d39238e57ec8cd1d69"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:swap\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"7a44221a59d68ea5bcf9070835adc80b5b7ae9012541f9d39238e57ec8cd1d69\", \"learn_s\": 20.662, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "action:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:zero", "learn_s": 20.697, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ce2f2d84f1fb7db785e449247338b21ed0b0f200bfe340d78f04728a69b8db4c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"ce2f2d84f1fb7db785e449247338b21ed0b0f200bfe340d78f04728a69b8db4c\", \"learn_s\": 20.697, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "action:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:zero", "learn_s": 20.584, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "414ad5c56fdd4998416013e4ce332491cb19f067c86fc0001b13170f2dc38e1d"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"414ad5c56fdd4998416013e4ce332491cb19f067c86fc0001b13170f2dc38e1d\", \"learn_s\": 20.584, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "action:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "action:zero", "learn_s": 20.637, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "32a19fe79ecfa6ff2cc93f65444f9382cf50395bac69dff0aaec628d867cb048"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"32a19fe79ecfa6ff2cc93f65444f9382cf50395bac69dff0aaec628d867cb048\", \"learn_s\": 20.637, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "action:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:zero", "learn_s": 21.278, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "fc69c04c872f8e85c9e67e576bfaa45a3bef579b0ab4823a3b23c0366b9e5d9c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"fc69c04c872f8e85c9e67e576bfaa45a3bef579b0ab4823a3b23c0366b9e5d9c\", \"learn_s\": 21.278, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "action:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:zero", "learn_s": 20.094, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b2feb45b80e90d9c951ff87181a5b74b8e79b3c6c5ea9ff226ed71f43c195f5f"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"b2feb45b80e90d9c951ff87181a5b74b8e79b3c6c5ea9ff226ed71f43c195f5f\", \"learn_s\": 20.094, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "action:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "action:zero", "learn_s": 20.496, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9fd2c154ea0b92aa6ca9477d4d6e3bfad96835450aa3bb046c81558cf3a51d37"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"9fd2c154ea0b92aa6ca9477d4d6e3bfad96835450aa3bb046c81558cf3a51d37\", \"learn_s\": 20.496, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "action:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:zero", "learn_s": 20.93, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f4f801a958cb0c7cb2ba354490de040cff162302e1cfa700053508b1ce1ff2f1"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"f4f801a958cb0c7cb2ba354490de040cff162302e1cfa700053508b1ce1ff2f1\", \"learn_s\": 20.93, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "action:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:zero", "learn_s": 19.991, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "476aadb0c510f70c285e3ec41aa491c9dabb5f3b59f0bb1183f16ff282f05b6b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"476aadb0c510f70c285e3ec41aa491c9dabb5f3b59f0bb1183f16ff282f05b6b\", \"learn_s\": 19.991, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "action:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "action:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "action:zero", "learn_s": 20.015, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2d5728a96abd3c67f02d5079856a04da02e1bdfe5ce15082f8a1fefb65caf9f7"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"action:zero\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"2d5728a96abd3c67f02d5079856a04da02e1bdfe5ce15082f8a1fefb65caf9f7\", \"learn_s\": 20.015, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "fault_json": {"cells": 0, "dose": "1.0", "fault": "delay-1ms", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "learn_s": 30.331, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"delay-1ms\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 30.331, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "fault_json": {"cells": 0, "dose": "1.0", "fault": "delay-1ms", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "learn_s": 29.73, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"delay-1ms\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 29.73, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "fault_json": {"cells": 0, "dose": "1.0", "fault": "delay-1ms", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "delay-1ms", "learn_s": 29.664, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"delay-1ms\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 29.664, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:f16", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.543, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8b050884e7a7cbccffc3be5ae3a32937bcae1e3d6685e1d68dff584cce28b796"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"8b050884e7a7cbccffc3be5ae3a32937bcae1e3d6685e1d68dff584cce28b796\", \"learn_s\": 20.543, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:f16", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.45, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d1fea8457f157db62f89e622b7cc02666b053da329f4e749812c75bc23b7da85"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"d1fea8457f157db62f89e622b7cc02666b053da329f4e749812c75bc23b7da85\", \"learn_s\": 20.45, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:f16", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.755, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8d4f5d81057c0a22f31ffd59f4a81791d32f980807bb2f8759c8ae53addec1e6"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"8d4f5d81057c0a22f31ffd59f4a81791d32f980807bb2f8759c8ae53addec1e6\", \"learn_s\": 20.755, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:f16", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.453, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3aaf60a0ae8b9f1e0fa6f8e5d50923a21aa371468fd0d3a192f402cee58ad1bb"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"3aaf60a0ae8b9f1e0fa6f8e5d50923a21aa371468fd0d3a192f402cee58ad1bb\", \"learn_s\": 20.453, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:f16", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.398, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "209d2f10fce87e29e406d667d582dc18d849e3838afcdba1efd90504dd609405"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"209d2f10fce87e29e406d667d582dc18d849e3838afcdba1efd90504dd609405\", \"learn_s\": 20.398, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:f16", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.383, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3b34c6f27670f8c084c869f3cc09b782d1bce50d243dbb16c6d34d023ffa9bdc"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3b34c6f27670f8c084c869f3cc09b782d1bce50d243dbb16c6d34d023ffa9bdc\", \"learn_s\": 20.383, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:f16", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.469, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bf6e41a3f0ceb0c193ecb992636b3726b0daec67ee5c57a746f5abd9ec0d131c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"bf6e41a3f0ceb0c193ecb992636b3726b0daec67ee5c57a746f5abd9ec0d131c\", \"learn_s\": 20.469, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:f16", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.557, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "18d8ddf9b6becdbaf078363e570d09fa5dc95233cf74fe779a21f030d3240956"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"18d8ddf9b6becdbaf078363e570d09fa5dc95233cf74fe779a21f030d3240956\", \"learn_s\": 20.557, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:f16", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:f16", "learn_s": 20.857, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ab9393885ec9665cc9b1747f383fef439ff097758a4267e023d8481d4c7c6f14"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:f16\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"ab9393885ec9665cc9b1747f383fef439ff097758a4267e023d8481d4c7c6f14\", \"learn_s\": 20.857, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:stale", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.629, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "a059213f9a51983d3726ea447137bed2a6bf9519f2ea1f917f9c243df752ad10"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"a059213f9a51983d3726ea447137bed2a6bf9519f2ea1f917f9c243df752ad10\", \"learn_s\": 20.629, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:stale", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.207, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f99f790f415b77551540202871b902ec97f60157738211160c59263dcd838dba"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"f99f790f415b77551540202871b902ec97f60157738211160c59263dcd838dba\", \"learn_s\": 20.207, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:stale", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.474, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e3e423de26c09fa86cb191c7da7b7b20ae5f4b3862e7da93671e0b5559642d90"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"e3e423de26c09fa86cb191c7da7b7b20ae5f4b3862e7da93671e0b5559642d90\", \"learn_s\": 20.474, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:stale", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.654, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "114f86a008c9ada8bbd475c88959bc55e9cc87afec3e325543a0035522994bcc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"114f86a008c9ada8bbd475c88959bc55e9cc87afec3e325543a0035522994bcc\", \"learn_s\": 20.654, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:stale", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.436, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2a99cc39f6694e15dd94f69256e1dc6f9e7d9f0feb13ee59c6c9a9511a5bae0f"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"2a99cc39f6694e15dd94f69256e1dc6f9e7d9f0feb13ee59c6c9a9511a5bae0f\", \"learn_s\": 20.436, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:stale", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 21.143, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "64ddd2f4a3ffa875a359e39d3990f903dac65c27b59c77974f8d923508d12784"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"64ddd2f4a3ffa875a359e39d3990f903dac65c27b59c77974f8d923508d12784\", \"learn_s\": 21.143, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:stale", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.484, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2cd3a46ffbc36bc948331f6c31cc78c6f67e47bc7073ce5ea6790f0a2f9797f4"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"2cd3a46ffbc36bc948331f6c31cc78c6f67e47bc7073ce5ea6790f0a2f9797f4\", \"learn_s\": 20.484, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:stale", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.497, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3d2b49b0fc04b73703aefec2ffcb2cc15e2477d73afa9a2892caa6b57579f63a"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"3d2b49b0fc04b73703aefec2ffcb2cc15e2477d73afa9a2892caa6b57579f63a\", \"learn_s\": 20.497, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:stale", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:stale", "learn_s": 20.265, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9080a4bff5c8e9a56c7d052d0cf1eae523162715bbdc4b453da3f6cf0e8f43a0"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:stale\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"9080a4bff5c8e9a56c7d052d0cf1eae523162715bbdc4b453da3f6cf0e8f43a0\", \"learn_s\": 20.265, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:swap", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.595, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "5bd0a6b2253befb36074287448ff38d62cb92dfc604818d178f3e0c1a184386e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"5bd0a6b2253befb36074287448ff38d62cb92dfc604818d178f3e0c1a184386e\", \"learn_s\": 20.595, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:swap", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.615, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c97adf0d51eb0b2ae9e308f40d6d0cf7bdd5ed60e880dc21127f4c36f498d51b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"c97adf0d51eb0b2ae9e308f40d6d0cf7bdd5ed60e880dc21127f4c36f498d51b\", \"learn_s\": 20.615, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:swap", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.584, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "56c13906e0339e42240176691f45495f3157d23fb5ec51ae69e6af43346107c0"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"56c13906e0339e42240176691f45495f3157d23fb5ec51ae69e6af43346107c0\", \"learn_s\": 20.584, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:swap", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.781, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3f8956ed04bbcdf4dd66a99be02377c128b2a61abfc5ce812abdd1b67efe6770"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"3f8956ed04bbcdf4dd66a99be02377c128b2a61abfc5ce812abdd1b67efe6770\", \"learn_s\": 20.781, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:swap", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.556, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c81ec51ab9a779c34c7a263d58ce594d31670b7e5df683b02852b94350ff4665"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"c81ec51ab9a779c34c7a263d58ce594d31670b7e5df683b02852b94350ff4665\", \"learn_s\": 20.556, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:swap", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 19.876, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1b6b79fdb5aff464d1bac921258e333eac7360ba93f31e634b09ca6ac6652ddd"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"1b6b79fdb5aff464d1bac921258e333eac7360ba93f31e634b09ca6ac6652ddd\", \"learn_s\": 19.876, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:swap", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.696, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "4e8492f728a2071c925c7cd81501a2a2c729c9be743fbedb6a91a70aa80d6644"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"4e8492f728a2071c925c7cd81501a2a2c729c9be743fbedb6a91a70aa80d6644\", \"learn_s\": 20.696, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:swap", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.874, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "a85f2e226bb75bda7066bb7416b78c9c0a1b01a8f27e0fd0d03366af8d5013cb"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"a85f2e226bb75bda7066bb7416b78c9c0a1b01a8f27e0fd0d03366af8d5013cb\", \"learn_s\": 20.874, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:swap", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:swap", "learn_s": 20.596, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8f41be4c2c30e0eca95d4872d6595fed1a326a230426151ad07343d2603dbef2"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:swap\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"8f41be4c2c30e0eca95d4872d6595fed1a326a230426151ad07343d2603dbef2\", \"learn_s\": 20.596, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:zero", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.562, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "010adf8755a199bbfac74753c48f4b8d87ed6e55dab05f8cf37a4b4ebedb19eb"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"010adf8755a199bbfac74753c48f4b8d87ed6e55dab05f8cf37a4b4ebedb19eb\", \"learn_s\": 20.562, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:zero", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.612, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "fcdec6dae576622ac43a4c713e1212a9c5534c718751ebeee2a0eec38f36e7ca"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"fcdec6dae576622ac43a4c713e1212a9c5534c718751ebeee2a0eec38f36e7ca\", \"learn_s\": 20.612, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 9, "dose": "0.01", "fault": "final-obs:zero", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 19.869, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "4e34a3288d28eb0360c5d2bba33569949249ffe6799ead1eef30bda7bbdcb97e"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"4e34a3288d28eb0360c5d2bba33569949249ffe6799ead1eef30bda7bbdcb97e\", \"learn_s\": 19.869, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:zero", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.323, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "efd619dccba3a2882efdb949b98cb67f586bef6ce3ed7d6b4518bc5864d274fa"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"efd619dccba3a2882efdb949b98cb67f586bef6ce3ed7d6b4518bc5864d274fa\", \"learn_s\": 20.323, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:zero", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.377, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b56b40aeb286b0f57274d53eb1cb0c93771ac0a82c03d6e3780d61724db7a614"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"b56b40aeb286b0f57274d53eb1cb0c93771ac0a82c03d6e3780d61724db7a614\", \"learn_s\": 20.377, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 512, "dose": "1.0", "fault": "final-obs:zero", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.818, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "226ab78061bdfa60b64a33cd37ad23bc5978a14207bec12862999debdbdf5729"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"226ab78061bdfa60b64a33cd37ad23bc5978a14207bec12862999debdbdf5729\", \"learn_s\": 20.818, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:zero", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.04, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bf033c564b5f5a8908143ef2a613f874461337e9f389069d7858995a94f199b4"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"bf033c564b5f5a8908143ef2a613f874461337e9f389069d7858995a94f199b4\", \"learn_s\": 20.04, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:zero", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.413, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d031431893d9def8a1744e839b4354b76f92caa2ad817ec5bd3efb05367e4b0d"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"d031431893d9def8a1744e839b4354b76f92caa2ad817ec5bd3efb05367e4b0d\", \"learn_s\": 20.413, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "final-obs:zero", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "final-obs:zero", "learn_s": 20.695, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "81a24d76a1ef284c301a4b76df3139b72aad27e8028af0ce5286cdc32ccdba39"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"final-obs:zero\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"81a24d76a1ef284c301a4b76df3139b72aad27e8028af0ce5286cdc32ccdba39\", \"learn_s\": 20.695, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "learn_s": 20.408, "log_cells": 2, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.408, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "learn_s": 20.136, "log_cells": 2, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.136, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:drop-first", "learn_s": 18.95, "log_cells": 2, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 18.95, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "learn_s": 20.716, "log_cells": 512, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.716, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "learn_s": 20.596, "log_cells": 512, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.596, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:drop-first", "learn_s": 18.828, "log_cells": 512, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 18.828, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:drop-first", "learn_s": 19.794, "log_cells": 1, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 19.794, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:drop-first", "learn_s": 19.859, "log_cells": 1, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 19.859, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:drop-first", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:drop-first", "learn_s": 19.13, "log_cells": 1, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:drop-first\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 19.13, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:short", "learn_s": 20.326, "log_cells": 2, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.326, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:short", "learn_s": 20.347, "log_cells": 2, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.347, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "0.01", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "0.01", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "log:short", "learn_s": 18.755, "log_cells": 2, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 18.755, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 2, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:short", "learn_s": 20.245, "log_cells": 512, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.245, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:short", "learn_s": 20.37, "log_cells": 512, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.37, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "log:short", "learn_s": 18.64, "log_cells": 512, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 18.64, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 512, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:short", "learn_s": 19.832, "log_cells": 1, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 19.832, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:short", "learn_s": 20.728, "log_cells": 1, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.728, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "one", "env": "pendulum", "fault": "log:short", "fault_json": {"cells": 0, "dose": "one", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "log:short", "learn_s": 18.654, "log_cells": 1, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"log:short\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 18.654, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"log_cells\": 1, \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "none", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "none", "learn_s": 20.86, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"none\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.86, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "none", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "none", "learn_s": 20.149, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"none\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 20.149, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "none", "fault_json": {"cells": 0, "dose": "1.0", "fault": "none", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "none", "learn_s": 20.007, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"none\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 20.007, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.594, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8cdce0a678f699032d28ae88e38af1fea6787a5bb69fb9bf90b55c13863ae41c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"8cdce0a678f699032d28ae88e38af1fea6787a5bb69fb9bf90b55c13863ae41c\", \"learn_s\": 20.594, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.083, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9efc34bdde7cca5437aa810fb18f74c510183960c26cee57747d669a79274f78"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"9efc34bdde7cca5437aa810fb18f74c510183960c26cee57747d669a79274f78\", \"learn_s\": 20.083, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.501, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "a291b401fd158855988cbb7a9c72d834533a8a73f0dc6154e4d81b4dc2098c16"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"a291b401fd158855988cbb7a9c72d834533a8a73f0dc6154e4d81b4dc2098c16\", \"learn_s\": 20.501, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.993, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "6bd93edb7230cacb85550b44354f730ce295ba935b79400d7b0a0eee27feb54c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"6bd93edb7230cacb85550b44354f730ce295ba935b79400d7b0a0eee27feb54c\", \"learn_s\": 20.993, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.721, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "db006462b90e388aa772c051059cc7171b2515366fbfef77513f9c4e8f4fbe1c"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"db006462b90e388aa772c051059cc7171b2515366fbfef77513f9c4e8f4fbe1c\", \"learn_s\": 20.721, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.319, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "0655bd234b5dfbf0a5b9cf81a0f2914b9602f5a5720ab30dedd5315e4da95965"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"0655bd234b5dfbf0a5b9cf81a0f2914b9602f5a5720ab30dedd5315e4da95965\", \"learn_s\": 20.319, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.828, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d1484e30901ce6447ef4b3af9b91f71627d3cd5bed95d5875e867e70a573b122"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"d1484e30901ce6447ef4b3af9b91f71627d3cd5bed95d5875e867e70a573b122\", \"learn_s\": 20.828, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.613, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "7809451b7987784ca0286a6147c8194e1b02967122892d72e4453a842c160bda"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"7809451b7987784ca0286a6147c8194e1b02967122892d72e4453a842c160bda\", \"learn_s\": 20.613, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:f16", "learn_s": 20.095, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3026d8dfe37562adf49c1918a69d43e270e3bea0eebe04d358684eb27352837e"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:f16\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"3026d8dfe37562adf49c1918a69d43e270e3bea0eebe04d358684eb27352837e\", \"learn_s\": 20.095, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.301, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "0cbb329655d41f97f09f93038c0ef0c372deba32c6c1f23772fa17218b68f46e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"0cbb329655d41f97f09f93038c0ef0c372deba32c6c1f23772fa17218b68f46e\", \"learn_s\": 20.301, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.14, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2a0550ffa81b09b27d29fd00d09758b7dcdd1d137e29f3340e289fd37971af76"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"2a0550ffa81b09b27d29fd00d09758b7dcdd1d137e29f3340e289fd37971af76\", \"learn_s\": 20.14, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.147, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "08b182787f2be4697b993cbd45953951eaa0e3bf3a48ec2ba0e6da08f2cbcf3c"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"08b182787f2be4697b993cbd45953951eaa0e3bf3a48ec2ba0e6da08f2cbcf3c\", \"learn_s\": 20.147, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "obs:stale", "first": [1, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.747, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bd9261b440e317296257afc47eb905aff06e7a23b9e2012e3bb438f3c41711f3"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"bd9261b440e317296257afc47eb905aff06e7a23b9e2012e3bb438f3c41711f3\", \"learn_s\": 20.747, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "obs:stale", "first": [1, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.544, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3b8e0f674f787435b2a4a7d5ab9e79c653e9adffd9048cdbf31fa0107f689e78"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"3b8e0f674f787435b2a4a7d5ab9e79c653e9adffd9048cdbf31fa0107f689e78\", \"learn_s\": 20.544, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "obs:stale", "first": [1, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.333, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b2634e34a82a6fe4633e391ca6b69368054d5c8393fa92284e9ef7839b2fa451"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"b2634e34a82a6fe4633e391ca6b69368054d5c8393fa92284e9ef7839b2fa451\", \"learn_s\": 20.333, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.704, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "765a1ee00df5050240447605d7053ec11fe47d3b77836d04ea6cfbaacadcbc8e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"765a1ee00df5050240447605d7053ec11fe47d3b77836d04ea6cfbaacadcbc8e\", \"learn_s\": 20.704, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:stale", "learn_s": 20.751, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "12613a2a86182794ea5eaa7dcaf740766aefd26fbbd6e6e95b72e01596507a6b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"12613a2a86182794ea5eaa7dcaf740766aefd26fbbd6e6e95b72e01596507a6b\", \"learn_s\": 20.751, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:stale", "learn_s": 21.01, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "978b430d48a030d3ae2f6a499e8265cae75aee7b4614df8558ef74a15072df2c"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:stale\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"978b430d48a030d3ae2f6a499e8265cae75aee7b4614df8558ef74a15072df2c\", \"learn_s\": 21.01, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.708, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f6cb32fa21faeae504dffb487b48b1ec6ef4b152b83bb743492dbb729cf8480c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"f6cb32fa21faeae504dffb487b48b1ec6ef4b152b83bb743492dbb729cf8480c\", \"learn_s\": 20.708, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.105, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "deeb971c43f7d912415db8f046f82afa66044dadbb0c9f422328b40881904a66"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"deeb971c43f7d912415db8f046f82afa66044dadbb0c9f422328b40881904a66\", \"learn_s\": 20.105, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.49, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "407d972936eee1c0dabed26ee7c1c46884e4e7d1b9c59c4b827a5edfd0e0c3de"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"407d972936eee1c0dabed26ee7c1c46884e4e7d1b9c59c4b827a5edfd0e0c3de\", \"learn_s\": 20.49, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "learn_s": 21.18, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "516c7ce6400c6a3a19deb69d7606e4d8fbe3329ac6dd206fe89c57c0a7e0c50b"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"516c7ce6400c6a3a19deb69d7606e4d8fbe3329ac6dd206fe89c57c0a7e0c50b\", \"learn_s\": 21.18, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.598, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ee7dcd3570d80af56add4403347418389a149337d4b44ac15370a143f6b39078"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"ee7dcd3570d80af56add4403347418389a149337d4b44ac15370a143f6b39078\", \"learn_s\": 20.598, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.141, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "220ba53a7e6b7342527d26087b31757ca3ab886a3606f1d6be22a86122d5ddbb"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"220ba53a7e6b7342527d26087b31757ca3ab886a3606f1d6be22a86122d5ddbb\", \"learn_s\": 20.141, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.436, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3fb58b1697cb788d14af8783f2bcf8a010882fb96265c54ce9e7644798f54b73"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"3fb58b1697cb788d14af8783f2bcf8a010882fb96265c54ce9e7644798f54b73\", \"learn_s\": 20.436, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.335, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9e1f81cd7cccc69f75c4d4221d193dc9eae536461ddc4cfb48d0035e9316bccb"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"9e1f81cd7cccc69f75c4d4221d193dc9eae536461ddc4cfb48d0035e9316bccb\", \"learn_s\": 20.335, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:swap", "learn_s": 20.166, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bfb37b1ab2802687916eec1d24e4e9b89191371adb7a86c50fef5c622330b806"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:swap\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"bfb37b1ab2802687916eec1d24e4e9b89191371adb7a86c50fef5c622330b806\", \"learn_s\": 20.166, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.291, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ed34c167047802d1b929940038834178b87cc1d3f708a946f1cbac9317cf0c8d"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"ed34c167047802d1b929940038834178b87cc1d3f708a946f1cbac9317cf0c8d\", \"learn_s\": 20.291, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.381, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3f052f949e2769ddc17e4e4b3e8da3da21499dab05935b06a6831f7855a96856"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"3f052f949e2769ddc17e4e4b3e8da3da21499dab05935b06a6831f7855a96856\", \"learn_s\": 20.381, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "obs:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.56, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "7b02c343814eb81994e76e8c27de213c691102caf9995c2ed55f33a0975cbcab"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"7b02c343814eb81994e76e8c27de213c691102caf9995c2ed55f33a0975cbcab\", \"learn_s\": 20.56, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "learn_s": 21.114, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "6f23c4542c383c67954edeb9410c0a47b90810944523ae5caecac59c38b87a9c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"6f23c4542c383c67954edeb9410c0a47b90810944523ae5caecac59c38b87a9c\", \"learn_s\": 21.114, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.327, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bfbe320981744a238dd58b3501e7863aff2802d07b24f7936ff2483a72cdd6b8"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"bfbe320981744a238dd58b3501e7863aff2802d07b24f7936ff2483a72cdd6b8\", \"learn_s\": 20.327, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102416 cells changed", "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 102416, "dose": "1.0", "fault": "obs:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.55, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e1dbe2264235904c765fe9cadf7f088e3320738b3ee6491ccac49aab9993f90d"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"e1dbe2264235904c765fe9cadf7f088e3320738b3ee6491ccac49aab9993f90d\", \"learn_s\": 20.55, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.411, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e2f06a8fe71d8aa7df2da2aef28db1400636d7fb372fd1276e27f13eef858364"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"e2f06a8fe71d8aa7df2da2aef28db1400636d7fb372fd1276e27f13eef858364\", \"learn_s\": 20.411, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:zero", "learn_s": 20.368, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9be2e0574b3de12492ec5083d1be87928bed8236c32f9b53a9d35c2857f51c6b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"9be2e0574b3de12492ec5083d1be87928bed8236c32f9b53a9d35c2857f51c6b\", \"learn_s\": 20.368, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "obs:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "obs:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "obs:zero", "learn_s": 19.845, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2f7f6acc16ee9d75dd384ab1f39b8d42b3c369fb46610f8829eb31ea968d0530"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"obs:zero\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"2f7f6acc16ee9d75dd384ab1f39b8d42b3c369fb46610f8829eb31ea968d0530\", \"learn_s\": 19.845, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.716, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "957547eacc352fc84abd671c0746e5d10cfa9ef7cb6d845fa792054af23d2591"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"957547eacc352fc84abd671c0746e5d10cfa9ef7cb6d845fa792054af23d2591\", \"learn_s\": 20.716, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.748, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ff01fa2aa13eafbf224ed6a223becc97ff5c899f64cf33386c8ca584d1ff40f4"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"ff01fa2aa13eafbf224ed6a223becc97ff5c899f64cf33386c8ca584d1ff40f4\", \"learn_s\": 20.748, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:f16", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.375, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1404abe167649fe5ce336c1622911d02e47ab9d5c2d190ed254d604a29ebadab"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"1404abe167649fe5ce336c1622911d02e47ab9d5c2d190ed254d604a29ebadab\", \"learn_s\": 20.375, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102385 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 102385, "dose": "1.0", "fault": "reward:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.635, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1d482f2411705675308f3eb7c079976c9169d1525ea2bbe99f5daa9d0cd5cf7c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"1d482f2411705675308f3eb7c079976c9169d1525ea2bbe99f5daa9d0cd5cf7c\", \"learn_s\": 20.635, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102393 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 102393, "dose": "1.0", "fault": "reward:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "learn_s": 21.022, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "add3c07891d96792275f5727b50fd158a7c2358b429c343322bac9ce104516f3"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"add3c07891d96792275f5727b50fd158a7c2358b429c343322bac9ce104516f3\", \"learn_s\": 21.022, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102378 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 102378, "dose": "1.0", "fault": "reward:f16", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.515, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c65997706ff6818dac93747664a12ad686358c477d3ae462050eda88c2c3ed57"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"c65997706ff6818dac93747664a12ad686358c477d3ae462050eda88c2c3ed57\", \"learn_s\": 20.515, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.248, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e95cad4deb7cbb61a29e7517893cc4c71b58f6176055cdd55002f93fd8a81e88"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"e95cad4deb7cbb61a29e7517893cc4c71b58f6176055cdd55002f93fd8a81e88\", \"learn_s\": 20.248, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.382, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "833fe81c6d85bbd8c036aca29efeba2336b38e46b1ef364ab651c7868c3d8652"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"833fe81c6d85bbd8c036aca29efeba2336b38e46b1ef364ab651c7868c3d8652\", \"learn_s\": 20.382, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:f16", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:f16", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:f16", "learn_s": 20.475, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9bbbf32e4f41722bbed75eac366a9aea2174d17520c6b2b406886061d6fb3e87"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:f16\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"9bbbf32e4f41722bbed75eac366a9aea2174d17520c6b2b406886061d6fb3e87\", \"learn_s\": 20.475, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.43, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c3ecfd3a78cf68e15f380e1d695933422978cba840c2c8e5425c1a8227cd0de8"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"c3ecfd3a78cf68e15f380e1d695933422978cba840c2c8e5425c1a8227cd0de8\", \"learn_s\": 20.43, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.488, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3d6114f7fac5d32b803abcbe24e12fb371bdc50c956f92348d25da63b24f951f"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"3d6114f7fac5d32b803abcbe24e12fb371bdc50c956f92348d25da63b24f951f\", \"learn_s\": 20.488, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:stale", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.337, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "70133a548fd853a5ade0729ba145cddba8b1ffa7c820bbb67d2cdaba2ad31aa0"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"70133a548fd853a5ade0729ba145cddba8b1ffa7c820bbb67d2cdaba2ad31aa0\", \"learn_s\": 20.337, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.331, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "982f942af8968885de881e4971c725f1c43f13848ad6d72d1666f9b030201f55"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"982f942af8968885de881e4971c725f1c43f13848ad6d72d1666f9b030201f55\", \"learn_s\": 20.331, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.407, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "0cddc6e30dc1289993a3d11f11a7717a2c3d7602a346a422f5350dde94db0f96"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"0cddc6e30dc1289993a3d11f11a7717a2c3d7602a346a422f5350dde94db0f96\", \"learn_s\": 20.407, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:stale", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.712, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "87c6042c1c473ef8bdf9b801c96dd2b6d9e37eba6dbc4de09ed54db63e7779ba"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"87c6042c1c473ef8bdf9b801c96dd2b6d9e37eba6dbc4de09ed54db63e7779ba\", \"learn_s\": 20.712, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.452, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "755acd6f9a46980c62d081a0171b479de4c8a7337c76a5f6b1728cf237339f37"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"755acd6f9a46980c62d081a0171b479de4c8a7337c76a5f6b1728cf237339f37\", \"learn_s\": 20.452, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.636, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "29a4a30e5766255dc543ac4bf7208bb2f2321cc3661b74f37e216bef817ccc98"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"29a4a30e5766255dc543ac4bf7208bb2f2321cc3661b74f37e216bef817ccc98\", \"learn_s\": 20.636, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:stale", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:stale", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:stale", "learn_s": 20.283, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8b0127646bbb04a455dab2e115ccf4fd7eac0e762f1e1f3800ec0cb4be7e1910"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:stale\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"8b0127646bbb04a455dab2e115ccf4fd7eac0e762f1e1f3800ec0cb4be7e1910\", \"learn_s\": 20.283, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.339, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c5bef941dec56beb1204a5f65b01a8b42922a0ab5c6d5f75bc66421bce78e37e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"c5bef941dec56beb1204a5f65b01a8b42922a0ab5c6d5f75bc66421bce78e37e\", \"learn_s\": 20.339, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.943, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "49df93d61a329ff833ef62acd4e8c0cc5a6678a7165437c8dbbe2a2203f6d6a9"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"49df93d61a329ff833ef62acd4e8c0cc5a6678a7165437c8dbbe2a2203f6d6a9\", \"learn_s\": 20.943, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:swap", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:swap", "learn_s": 19.842, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1f2b8986f90ac602d23bf087b001ff26f6f80792a7e0e47a2635ee43f756f9d4"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"1f2b8986f90ac602d23bf087b001ff26f6f80792a7e0e47a2635ee43f756f9d4\", \"learn_s\": 19.842, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.717, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f15ee7affa35b9ba30703591ca7e8f1f69074453c3a1e705bfb52bea540f24b7"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"f15ee7affa35b9ba30703591ca7e8f1f69074453c3a1e705bfb52bea540f24b7\", \"learn_s\": 20.717, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.626, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "333cd4cdfc6e46fd6a2ee7c62b38c56c9a701f49570309afe75c073603f9aed1"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"333cd4cdfc6e46fd6a2ee7c62b38c56c9a701f49570309afe75c073603f9aed1\", \"learn_s\": 20.626, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:swap", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.831, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "5a1c7763bda92bbb860edad908cb4e0502ad321f4e536160173f1bd892b2e86a"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"5a1c7763bda92bbb860edad908cb4e0502ad321f4e536160173f1bd892b2e86a\", \"learn_s\": 20.831, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.654, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "67f6552c759e4c631c3487935243e764462447999d510e1620ba168be13afe1e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"67f6552c759e4c631c3487935243e764462447999d510e1620ba168be13afe1e\", \"learn_s\": 20.654, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.415, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "38b7ad558bec6f21429d360bff75c741fe425dbb4b6a88f265a21ebb4cb1487c"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"38b7ad558bec6f21429d360bff75c741fe425dbb4b6a88f265a21ebb4cb1487c\", \"learn_s\": 20.415, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:swap", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:swap", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:swap", "learn_s": 20.458, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "dd11b65954db21c5709437df96d9f97ac9a9cbdc9f0902bd87ec3ee1b41ed397"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:swap\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"dd11b65954db21c5709437df96d9f97ac9a9cbdc9f0902bd87ec3ee1b41ed397\", \"learn_s\": 20.458, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.766, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "11d1d7dcda1308bed58cf5c6c609ca8f7b009280643baec42f720a7fc349902f"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"11d1d7dcda1308bed58cf5c6c609ca8f7b009280643baec42f720a7fc349902f\", \"learn_s\": 20.766, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.778, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e90c654bf8b0f05fdb104ad2b9932adce1bfcb005aa4738093bde3a8f1616c63"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"e90c654bf8b0f05fdb104ad2b9932adce1bfcb005aa4738093bde3a8f1616c63\", \"learn_s\": 20.778, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "reward:zero", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.474, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "57614ceacae8d11d3917882192380bf2eb50d90fa500c7bb807510e718829d5b"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"57614ceacae8d11d3917882192380bf2eb50d90fa500c7bb807510e718829d5b\", \"learn_s\": 20.474, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.641, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f3c1c4c32fe38c07a9c5e77972b48e9664e755f000259bdb7cfd1fd332143942"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"f3c1c4c32fe38c07a9c5e77972b48e9664e755f000259bdb7cfd1fd332143942\", \"learn_s\": 20.641, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "learn_s": 19.952, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d483503e75afb399f663b2b047e0123b08873f3fcfb8d752bc750f19b2e8d7d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"d483503e75afb399f663b2b047e0123b08873f3fcfb8d752bc750f19b2e8d7d6\", \"learn_s\": 19.952, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "reward:zero", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.62, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "092cb09b730bd13d27f073317378a58f529eba48cc5cf4b738cc1d1998f7beaf"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"092cb09b730bd13d27f073317378a58f529eba48cc5cf4b738cc1d1998f7beaf\", \"learn_s\": 20.62, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.363, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e42c5fa871d054c65844f4edea6958f0eec79579424a56e1944048f0fcb2f614"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"e42c5fa871d054c65844f4edea6958f0eec79579424a56e1944048f0fcb2f614\", \"learn_s\": 20.363, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.792, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b0cdde979e342d2b7e06e534ace3018e7cc0e5b5a744f85f11ffb67e990d611b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"b0cdde979e342d2b7e06e534ace3018e7cc0e5b5a744f85f11ffb67e990d611b\", \"learn_s\": 20.792, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "reward:zero", "fault_json": {"cells": 1, "dose": "one", "fault": "reward:zero", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "reward:zero", "learn_s": 20.257, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "77163c4c1b1671e87094bf232cb54dd08a9922fec36af6e97a8a0fbb63f5a0a7"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"reward:zero\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"77163c4c1b1671e87094bf232cb54dd08a9922fec36af6e97a8a0fbb63f5a0a7\", \"learn_s\": 20.257, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "step:fill", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "step:fill", "learn_s": 20.191, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "32ba03dda20fe19c43bde92deb3d07334a3c8de463072ba9a489351be924c84a"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"32ba03dda20fe19c43bde92deb3d07334a3c8de463072ba9a489351be924c84a\", \"learn_s\": 20.191, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "step:fill", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "step:fill", "learn_s": 20.287, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c201aca08c95d61dc0600f5e002e269cdab95d69fe67c3e97f69f1a7c5b24a0b"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"c201aca08c95d61dc0600f5e002e269cdab95d69fe67c3e97f69f1a7c5b24a0b\", \"learn_s\": 20.287, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "step:fill", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "step:fill", "learn_s": 19.893, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b14b76d2918c495692958620f755d5cd6bd5f7be2e502cbcc98a81521f4e0fb6"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"b14b76d2918c495692958620f755d5cd6bd5f7be2e502cbcc98a81521f4e0fb6\", \"learn_s\": 19.893, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "step:fill", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "step:fill", "learn_s": 18.361, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "7c353631d9f35e80f9bc70468bfd20bdfb96de1aefb1d1c00ec593827e8a1819"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"7c353631d9f35e80f9bc70468bfd20bdfb96de1aefb1d1c00ec593827e8a1819\", \"learn_s\": 18.361, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "step:fill", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "step:fill", "learn_s": 18.855, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d303871d9f5fcb4ed42e30021befb796e4e14869d9d4ce66ab1adeb4b8ad0e16"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"d303871d9f5fcb4ed42e30021befb796e4e14869d9d4ce66ab1adeb4b8ad0e16\", \"learn_s\": 18.855, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "step:fill", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "step:fill", "learn_s": 18.523, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "36f6d91e46fc964b7d65d4b7d61f816d70c03459d94c5218a2e6ef8884e22e79"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"36f6d91e46fc964b7d65d4b7d61f816d70c03459d94c5218a2e6ef8884e22e79\", \"learn_s\": 18.523, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1, "dose": "one", "fault": "step:fill", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "step:fill", "learn_s": 19.933, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1426c4028cbad342c396610c0520678af50a6610e6e8d7777c9077d79f2323d9"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"1426c4028cbad342c396610c0520678af50a6610e6e8d7777c9077d79f2323d9\", \"learn_s\": 19.933, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1, "dose": "one", "fault": "step:fill", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "step:fill", "learn_s": 20.638, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1b86e0d9c17d72cede16cd2b2ac43130feb5273d52b76d91514a4c8ebe6fb603"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"1b86e0d9c17d72cede16cd2b2ac43130feb5273d52b76d91514a4c8ebe6fb603\", \"learn_s\": 20.638, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "step:fill", "fault_json": {"cells": 1, "dose": "one", "fault": "step:fill", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "step:fill", "learn_s": 20.871, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "e2d1cee48742bc8f219fb257598130869c6d4c9bdcb1af5afa860e5f22c66901"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"step:fill\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"e2d1cee48742bc8f219fb257598130869c6d4c9bdcb1af5afa860e5f22c66901\", \"learn_s\": 20.871, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "terminated:spurious", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.615, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bfaf6961dac95ae1d8c670b808f39ac816b9dddfeaf611f686330aa13335ba0d"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"bfaf6961dac95ae1d8c670b808f39ac816b9dddfeaf611f686330aa13335ba0d\", \"learn_s\": 20.615, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "terminated:spurious", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.513, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "d166081a80d480aa5495a5dd4ceb523d631ed5534d760555be50f08e56a7a019"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"d166081a80d480aa5495a5dd4ceb523d631ed5534d760555be50f08e56a7a019\", \"learn_s\": 20.513, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1068 cells changed", "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1068, "dose": "0.01", "fault": "terminated:spurious", "first": [5, 7], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.608, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "66d62461cca82cee978fac4560be188393865cf5f04094c20995af0965f35b82"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"66d62461cca82cee978fac4560be188393865cf5f04094c20995af0965f35b82\", \"learn_s\": 20.608, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "terminated:spurious", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 21.815, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "f885d3969356790a969d3ee67761f05283e607e5e928eb143aa7104e59d0f0f8"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"f885d3969356790a969d3ee67761f05283e607e5e928eb143aa7104e59d0f0f8\", \"learn_s\": 21.815, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "terminated:spurious", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 21.687, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ef551e57c5b5b9a485e65662b12ae09ffb96a7ab2127066ba777a4ae96d54c8a"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"ef551e57c5b5b9a485e65662b12ae09ffb96a7ab2127066ba777a4ae96d54c8a\", \"learn_s\": 21.687, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 102400 cells changed", "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 102400, "dose": "1.0", "fault": "terminated:spurious", "first": [0, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 21.308, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1611c2558e2eb681d169815a0f0a00a6f34a9aaf5f2025147b24c9d1ce7c187e"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"1611c2558e2eb681d169815a0f0a00a6f34a9aaf5f2025147b24c9d1ce7c187e\", \"learn_s\": 21.308, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1, "dose": "one", "fault": "terminated:spurious", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.366, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "44d6e670481fd952b8e171b0edf38cb42f2109ee7739480420e4f2a363ce118c"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"44d6e670481fd952b8e171b0edf38cb42f2109ee7739480420e4f2a363ce118c\", \"learn_s\": 20.366, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1, "dose": "one", "fault": "terminated:spurious", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.716, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ad8c101aa0b6588a1d8ea9b4bc945c17b73872b8f2668a5864d7c6f865b41646"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"ad8c101aa0b6588a1d8ea9b4bc945c17b73872b8f2668a5864d7c6f865b41646\", \"learn_s\": 20.716, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "fault_json": {"cells": 1, "dose": "one", "fault": "terminated:spurious", "first": [3249, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "terminated:spurious", "learn_s": 20.396, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b9f30a62b76eea4dded39f7ec85519554a17fcaf90f7c5f688513f0b3e227d1a"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"terminated:spurious\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"b9f30a62b76eea4dded39f7ec85519554a17fcaf90f7c5f688513f0b3e227d1a\", \"learn_s\": 20.396, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:as-term", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.515, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "9ea567853930e77e0d5240b24c831769a062199ac468fbcc215d50dff551903f"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"9ea567853930e77e0d5240b24c831769a062199ac468fbcc215d50dff551903f\", \"learn_s\": 20.515, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:as-term", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.474, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "5e225449710dbe0f600f7b1f32b754cfd62c1ce88a1bcecd061e7a44e6fc9857"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"5e225449710dbe0f600f7b1f32b754cfd62c1ce88a1bcecd061e7a44e6fc9857\", \"learn_s\": 20.474, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:as-term", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 19.974, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8ffa7e426a9ab88a248e76af9867dfd22bde68d1275d8ebd1101b551db4c9df6"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"8ffa7e426a9ab88a248e76af9867dfd22bde68d1275d8ebd1101b551db4c9df6\", \"learn_s\": 19.974, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:as-term", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.741, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "57eb56014c21f1dd320d2b24753707bf771c4f0c28bf165a79bfa080816a8803"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"57eb56014c21f1dd320d2b24753707bf771c4f0c28bf165a79bfa080816a8803\", \"learn_s\": 20.741, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:as-term", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 19.935, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "2c8a0d7ae748c9824b6502d73718b90305e1bbb8193260fd109a53d2ddc5762c"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"2c8a0d7ae748c9824b6502d73718b90305e1bbb8193260fd109a53d2ddc5762c\", \"learn_s\": 19.935, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:as-term", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.243, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3292a6cec3c33a2d7b33f574a03285fe1e94d5d0e2e2837b47e0458bc40ceecb"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3292a6cec3c33a2d7b33f574a03285fe1e94d5d0e2e2837b47e0458bc40ceecb\", \"learn_s\": 20.243, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:as-term", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.138, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1778bb25214c893421f4e2a59aef4f88b6396bc40379ed22389f4812b30498c5"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"1778bb25214c893421f4e2a59aef4f88b6396bc40379ed22389f4812b30498c5\", \"learn_s\": 20.138, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:as-term", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.312, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3145900642c34f9f8846c4d8844c2fa0a61265968b54d361f96d5c05fa22b6fd"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"3145900642c34f9f8846c4d8844c2fa0a61265968b54d361f96d5c05fa22b6fd\", \"learn_s\": 20.312, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:as-term", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:as-term", "learn_s": 20.33, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bb2c9d55a20bc8d3026e8ebd1b8131d5357b5395492b10a45f2f68c363c20532"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:as-term\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"bb2c9d55a20bc8d3026e8ebd1b8131d5357b5395492b10a45f2f68c363c20532\", \"learn_s\": 20.33, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:drop", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.589, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "bfafb0fbd5c3313b7bc637b85afe4bd6fbc465baa4ba47f9d6ce4135a5f5389e"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"0.01\", \"seed\": 0, \"weights_sha256\": \"bfafb0fbd5c3313b7bc637b85afe4bd6fbc465baa4ba47f9d6ce4135a5f5389e\", \"learn_s\": 20.589, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:drop", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.563, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "db17509e0d55f9f530e3949d3b3ccb9b004cf2066d529c6686b3b2d3be0f6ab5"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"0.01\", \"seed\": 1, \"weights_sha256\": \"db17509e0d55f9f530e3949d3b3ccb9b004cf2066d529c6686b3b2d3be0f6ab5\", \"learn_s\": 20.563, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 9 cells changed", "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 9, "dose": "0.01", "fault": "truncated:drop", "first": [199, 12], "steps": 6400}, "result": {"client_rc": 0, "dose": "0.01", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.523, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "8c5d0450e157dc071c0c7faa326b9af48eaae9eee18077ebd5b4553f27865513"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"0.01\", \"seed\": 2, \"weights_sha256\": \"8c5d0450e157dc071c0c7faa326b9af48eaae9eee18077ebd5b4553f27865513\", \"learn_s\": 20.523, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:drop", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.466, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "1a8332959838731601c25b32641a9c21540b5f0e743f779c57642595326886cf"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"1a8332959838731601c25b32641a9c21540b5f0e743f779c57642595326886cf\", \"learn_s\": 20.466, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:drop", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.671, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "c077fca8b10f246a0781deffcafd563837645513759cd6131e428fac51cb7185"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"c077fca8b10f246a0781deffcafd563837645513759cd6131e428fac51cb7185\", \"learn_s\": 20.671, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 512 cells changed", "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 512, "dose": "1.0", "fault": "truncated:drop", "first": [199, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.145, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "85691232578e1d5e1322744d5a6aab1412e64188f3aaad8cd1e188e6ad35da77"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"85691232578e1d5e1322744d5a6aab1412e64188f3aaad8cd1e188e6ad35da77\", \"learn_s\": 20.145, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:drop", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.076, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "754e49b981b129dd206e0ac81549efc8d2b944ad9b0a70836c3ee1b3180f5043"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"one\", \"seed\": 0, \"weights_sha256\": \"754e49b981b129dd206e0ac81549efc8d2b944ad9b0a70836c3ee1b3180f5043\", \"learn_s\": 20.076, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:drop", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:drop", "learn_s": 20.183, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "b21d87183b1cbaf2b0c5cf517819a4ba0399d3c277d5373145830c2221a3f0ad"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"one\", \"seed\": 1, \"weights_sha256\": \"b21d87183b1cbaf2b0c5cf517819a4ba0399d3c277d5373145830c2221a3f0ad\", \"learn_s\": 20.183, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 1 cells changed", "dose": "one", "env": "pendulum", "fault": "truncated:drop", "fault_json": {"cells": 1, "dose": "one", "fault": "truncated:drop", "first": [3399, 0], "steps": 6400}, "result": {"client_rc": 0, "dose": "one", "env": "pendulum", "fault": "truncated:drop", "learn_s": 19.847, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "4bc2ef7bfc184f0b34bcc178630ce2ce93f66667a83e752e83ab6024e2ac8bae"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"truncated:drop\", \"dose\": \"one\", \"seed\": 2, \"weights_sha256\": \"4bc2ef7bfc184f0b34bcc178630ce2ce93f66667a83e752e83ab6024e2ac8bae\", \"learn_s\": 19.847, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "fault_json": {"cells": 0, "dose": "1.0", "fault": "wire-float64", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "learn_s": 20.351, "seed": 0, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc"}, "seed": 0, "train_log": "{\"env\": \"pendulum\", \"fault\": \"wire-float64\", \"dose\": \"1.0\", \"seed\": 0, \"weights_sha256\": \"ec5b8226b227f3fa58bd771b411e3673b751ec2c062b010cf0dcef60baed42bc\", \"learn_s\": 20.351, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "fault_json": {"cells": 0, "dose": "1.0", "fault": "wire-float64", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "learn_s": 19.837, "seed": 1, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6"}, "seed": 1, "train_log": "{\"env\": \"pendulum\", \"fault\": \"wire-float64\", \"dose\": \"1.0\", \"seed\": 1, \"weights_sha256\": \"062e92e3bab334bb20d04f963612273166bef926f9edb017a624b133313733d6\", \"learn_s\": 19.837, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} +{"client_log": "closed after 6400 steps: 'plugrl-server-stop'; 0 cells changed", "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "fault_json": {"cells": 0, "dose": "1.0", "fault": "wire-float64", "first": null, "steps": 6400}, "result": {"client_rc": 0, "dose": "1.0", "env": "pendulum", "fault": "wire-float64", "learn_s": 19.963, "seed": 2, "steps": 102400, "torch": "2.14.1+cpu", "weights_sha256": "3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41"}, "seed": 2, "train_log": "{\"env\": \"pendulum\", \"fault\": \"wire-float64\", \"dose\": \"1.0\", \"seed\": 2, \"weights_sha256\": \"3a8d968f19e2a8b5dc01540e41c4a64c02cb7a8c99ccdedf4a016008cf8bcd41\", \"learn_s\": 19.963, \"steps\": 102400, \"torch\": \"2.14.1+cpu\", \"client_rc\": 0}"} diff --git a/experiments/e55-step-ledger/results/summary.txt b/experiments/e55-step-ledger/results/summary.txt new file mode 100644 index 0000000..fc08b0f --- /dev/null +++ b/experiments/e55-step-ledger/results/summary.txt @@ -0,0 +1,89 @@ +env fault dose cells raises rule strict weights record bridge +pendulum none 1.0 0/0/0 0/3 0/3 - 0/3 0/3 0/3 +pendulum delay-1ms 1.0 0/0/0 0/3 0/3 - 0/3 0/3 0/3 +pendulum wire-float64 1.0 0/0/0 0/3 0/3 - 0/3 0/3 0/3 +pendulum obs:zero 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:zero 1.0 102416/102416/102416 0/3 3/3 - 3/3 0/3 0/3 +pendulum obs:zero one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:stale 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:stale 1.0 102400/102400/102400 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:stale one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:swap 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:swap 1.0 102416/102416/102416 0/3 3/3 - 3/3 0/3 0/3 +pendulum obs:swap one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:f16 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:f16 1.0 102416/102416/102416 0/3 0/3 - 3/3 0/3 0/3 +pendulum obs:f16 one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:zero 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:zero 1.0 102400/102400/102400 0/3 3/3 - 3/3 0/3 0/3 +pendulum action:zero one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:stale 0.01 817/769/802 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:stale 1.0 77023/74754/78333 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:stale one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:swap 0.01 976/979/987 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:swap 1.0 85056/84269/82169 0/3 3/3 - 3/3 0/3 0/3 +pendulum action:swap one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:f16 0.01 746/707/751 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:f16 1.0 70086/69306/70621 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:f16 one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:clip 0.01 564/518/529 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:clip 1.0 63653/63417/58306 0/3 0/3 - 3/3 0/3 0/3 +pendulum action:clip one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum reward:zero 0.01 1068/1068/1068 0/3 0/3 - 3/3 3/3 0/3 +pendulum reward:zero 1.0 102400/102400/102400 0/3 3/3 - 3/3 3/3 0/3 +pendulum reward:zero one 1/1/1 0/3 0/3 - 3/3 1/3 0/3 +pendulum reward:stale 0.01 1068/1068/1068 0/3 0/3 - 3/3 3/3 0/3 +pendulum reward:stale 1.0 102400/102400/102400 0/3 0/3 - 3/3 3/3 0/3 +pendulum reward:stale one 1/1/1 0/3 0/3 - 3/3 1/3 0/3 +pendulum reward:swap 0.01 1068/1068/1068 0/3 0/3 - 3/3 3/3 0/3 +pendulum reward:swap 1.0 102400/102400/102400 0/3 3/3 - 3/3 3/3 0/3 +pendulum reward:swap one 1/1/1 0/3 0/3 - 3/3 2/3 0/3 +pendulum reward:f16 0.01 1068/1068/1068 0/3 0/3 - 3/3 0/3 0/3 +pendulum reward:f16 1.0 102385/102393/102378 0/3 0/3 - 3/3 0/3 0/3 +pendulum reward:f16 one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:zero 0.01 9/9/9 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:zero 1.0 512/512/512 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:zero one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:stale 0.01 9/9/9 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:stale 1.0 512/512/512 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:stale one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:swap 0.01 9/9/9 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:swap 1.0 512/512/512 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:swap one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:f16 0.01 9/9/9 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:f16 1.0 512/512/512 0/3 0/3 - 3/3 0/3 0/3 +pendulum final-obs:f16 one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum terminated:spurious 0.01 1068/1068/1068 0/3 3/3 - 3/3 3/3 0/3 +pendulum terminated:spurious 1.0 102400/102400/102400 0/3 3/3 - 3/3 3/3 0/3 +pendulum terminated:spurious one 1/1/1 0/3 0/3 - 3/3 3/3 0/3 +pendulum truncated:drop 0.01 9/9/9 0/3 0/3 - 3/3 3/3 0/3 +pendulum truncated:drop 1.0 512/512/512 0/3 3/3 - 3/3 3/3 0/3 +pendulum truncated:drop one 1/1/1 0/3 0/3 - 3/3 3/3 0/3 +pendulum truncated:as-term 0.01 9/9/9 0/3 0/3 - 3/3 0/3 0/3 +pendulum truncated:as-term 1.0 512/512/512 0/3 0/3 - 3/3 0/3 0/3 +pendulum truncated:as-term one 1/1/1 0/3 0/3 - 3/3 0/3 0/3 +pendulum step:fill 0.01 1068/1068/1068 0/3 0/3 - 3/3 3/3 0/3 +pendulum step:fill 1.0 102400/102400/102400 0/3 3/3 - 3/3 0/3 0/3 +pendulum step:fill one 1/1/1 0/3 0/3 - 3/3 3/3 0/3 +pendulum log:drop-first 0.01 2/2/2 0/3 0/3 - 0/3 3/3 3/3 +pendulum log:drop-first 1.0 512/512/512 0/3 0/3 - 0/3 3/3 3/3 +pendulum log:drop-first one 1/1/1 0/3 0/3 - 0/3 3/3 3/3 +pendulum log:short 0.01 2/2/2 0/3 0/3 - 0/3 3/3 3/3 +pendulum log:short 1.0 512/512/512 0/3 0/3 - 0/3 3/3 3/3 +pendulum log:short one 1/1/1 0/3 0/3 - 0/3 3/3 3/3 + +share of runs caught, by dose (runs with a changed cell; either = weights or record) + pendulum client one n= 63 raises 0.0 rule 0.0 strict weights 1.0 record 0.206 bridge 0.0 either 1.0 + pendulum client 0.01 n= 63 raises 0.0 rule 0.048 strict weights 1.0 record 0.286 bridge 0.0 either 1.0 + pendulum client 1.0 n= 63 raises 0.0 rule 0.429 strict weights 1.0 record 0.238 bridge 0.0 either 1.0 + pendulum log one n= 6 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum log 0.01 n= 6 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum log 1.0 n= 6 raises 0.0 rule 0.0 strict weights 0.0 record 1.0 bridge 1.0 either 1.0 + pendulum all one n= 69 raises 0.0 rule 0.0 strict weights 0.913 record 0.275 bridge 0.087 either 1.0 + pendulum all 0.01 n= 69 raises 0.0 rule 0.043 strict weights 0.913 record 0.348 bridge 0.087 either 1.0 + pendulum all 1.0 n= 69 raises 0.0 rule 0.391 strict weights 0.913 record 0.304 bridge 0.087 either 1.0 + +pendulum none at seed 0: ec5b8226, E50's ec5b8226: same +pendulum none at seed 1: 062e92e3, E50's 062e92e3: same +pendulum none at seed 2: 3a8d968f, E50's 3a8d968f: same +incomplete without an error: none diff --git a/experiments/e55-step-ledger/results/verdicts.txt b/experiments/e55-step-ledger/results/verdicts.txt new file mode 100644 index 0000000..6138f98 --- /dev/null +++ b/experiments/e55-step-ledger/results/verdicts.txt @@ -0,0 +1,7 @@ +V1: holds - 216 of 216 same-machine and 24 of 24 cross-machine runs complete +V2: holds - none: {'0': 'ec5b8226', '1': '062e92e3', '2': '3a8d968f'} +P1: holds - caught and right in 189 of 189 client-fault runs +P2: holds - no difference in 30 of 30 control and log-fault runs +P3: holds - caught and right in 21 of 21 cross-machine client-fault runs (21 faults); none differs: ['0'] +P4: holds - across machines none ended on ['d7a19cc0'], guangzhao's on ec5b8226 +P5: holds - ledger or record caught 207 of 207 same-machine and 23 of 23 cross-machine runs with a changed value diff --git a/experiments/e55-step-ledger/verdicts.py b/experiments/e55-step-ledger/verdicts.py new file mode 100644 index 0000000..3da70d2 --- /dev/null +++ b/experiments/e55-step-ledger/verdicts.py @@ -0,0 +1,152 @@ +"""E55: judge PROTOCOL.md's checks and predictions. + + python verdicts.py results # prints, and writes results/verdicts.txt + +Reads, for the same-machine runs, results/ledger.csv (ledger.py) and +results/runs.csv (summarise.py); for the runs across machines, the same two +files under results/cross/. +""" + +from __future__ import annotations + +import csv +import json +import pathlib +import sys + +CONTROLS = ("none", "delay-1ms", "wire-float64") +LOG = ("log:drop-first", "log:short") +E50 = {"0": "ec5b8226", "1": "062e92e3", "2": "3a8d968f"} + + +def read(path: pathlib.Path) -> list[dict]: + with open(path, encoding="utf-8", newline="") as f: + return list(csv.DictReader(f)) + + +def main() -> int: + root = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("results") + same_l, same_r = read(root / "ledger.csv"), read(root / "runs.csv") + cross_l, cross_r = ( + read(root / "cross" / "ledger.csv"), + read(root / "cross" / "runs.csv"), + ) + out = [] + + def verdict(name: str, ok: bool, detail: str) -> None: + out.append(f"{name}: {'holds' if ok else 'FAILS'} - {detail}") + + def client(rows): + return [ + r + for r in rows + if r["fault"] not in CONTROLS + LOG and r["cells"] not in ("", "0") + ] + + # V1: every run completes. Same machine: runs.csv's complete; across + # machines the client's exit is in its client.log. + v1_bad = [r for r in same_r if r["complete"] != "1"] + cross_bad = [] + for r in cross_r: + run = ( + root + / "cross" + / r["env"] + / r["fault"].replace(":", "__") + / r["dose"] + / f"seed{r['seed']}" + ) + log = (run / "client.log").read_text(encoding="utf-8", errors="replace") + res = json.loads((run / "result.json").read_text()) + if "client exit 0" not in log or res["steps"] != 102_400: + cross_bad.append(r["fault"]) + verdict( + "V1", + not v1_bad and not cross_bad, + f"{len(same_r) - len(v1_bad)} of {len(same_r)} same-machine and " + f"{len(cross_r) - len(cross_bad)} of {len(cross_r)} cross-machine runs complete", + ) + none = {r["seed"]: r["sha"] for r in same_r if r["fault"] == "none"} + verdict( + "V2", + all(none.get(s, "").startswith(h) for s, h in E50.items()), + f"none: {none}", + ) + + c = client(same_l) + p1_bad = [r for r in c if r["caught"] != "1" or r["right"] != "1"] + verdict( + "P1", + not p1_bad, + f"caught and right in {len(c) - len(p1_bad)} of {len(c)} client-fault runs" + + ( + f"; not: {[(r['fault'], r['dose'], r['seed'], r['found']) for r in p1_bad][:6]}" + if p1_bad + else "" + ), + ) + + quiet = [r for r in same_l + cross_l if r["fault"] in CONTROLS + LOG] + p2_bad = [r for r in quiet if r["caught"] != "0"] + verdict( + "P2", + not p2_bad, + f"no difference in {len(quiet) - len(p2_bad)} of {len(quiet)} control and log-fault runs", + ) + + cc = client(cross_l) + cross_faults = {r["fault"] for r in cc} + p3_bad = [r for r in cc if r["caught"] != "1" or r["right"] != "1"] + cross_none = [r for r in cross_l if r["fault"] == "none"] + p3_ok = ( + not p3_bad + and len(cross_faults) == 21 + and all(r["caught"] == "0" for r in cross_none) + and cross_none + ) + verdict( + "P3", + bool(p3_ok), + f"caught and right in {len(cc) - len(p3_bad)} of {len(cc)} cross-machine client-fault runs " + f"({len(cross_faults)} faults); none differs: {[r['caught'] for r in cross_none]}", + ) + + cross_none_sha = [r["sha"] for r in cross_r if r["fault"] == "none"] + verdict( + "P4", + bool(cross_none_sha) and not cross_none_sha[0].startswith(E50["0"]), + f"across machines none ended on {cross_none_sha}, guangzhao's on {E50['0']}", + ) + + def caught_either(ledger_rows, run_rows): + record = {(r["fault"], r["dose"], r["seed"]): r["record"] for r in run_rows} + rows = [ + r + for r in ledger_rows + if r["fault"] not in CONTROLS and r["cells"] not in ("", "0") + ] + miss = [ + r + for r in rows + if r["caught"] != "1" + and record.get((r["fault"], r["dose"], r["seed"])) != "1" + ] + return rows, miss + + rows_s, miss_s = caught_either(same_l, same_r) + rows_c, miss_c = caught_either(cross_l, cross_r) + verdict( + "P5", + not miss_s and not miss_c, + f"ledger or record caught {len(rows_s) - len(miss_s)} of {len(rows_s)} same-machine and " + f"{len(rows_c) - len(miss_c)} of {len(rows_c)} cross-machine runs with a changed value", + ) + + text = "\n".join(out) + print(text) + (root / "verdicts.txt").write_bytes((text + "\n").encode("utf-8")) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())