Hermes Labs

Evaluator source

Reference evaluator · Python

Part of the inspectable closed-world token apparatus. Engineering checks and source matching limitations are distinct from empirical model findings.

Research status
Offline evaluation apparatus

Scientific record

Source code

197 lines. The original download preserves the full source.

Read the source
"""Offline Fiction-CWR v0.1 token checker. No provider calls or code execution."""
import argparse
import json
import re
import sys
from pathlib import Path

VERSION = "fiction-cwr-token-v0.1"
MAX_JSON_BYTES = 1_048_576


class InputError(ValueError):
    pass


def _pairs(pairs):
    obj = {}
    for key, value in pairs:
        if key in obj:
            raise InputError(f"duplicate JSON key: {key}")
        obj[key] = value
    return obj


def parse_json(text):
    def invalid_constant(value):
        raise InputError(f"non-finite JSON number: {value}")
    try:
        if type(text) is not str or len(text.encode("utf-8")) > MAX_JSON_BYTES:
            raise InputError("JSON text exceeds input limit or is not text")
        return json.loads(text, object_pairs_hook=_pairs,
                          parse_constant=invalid_constant)
    except (ValueError, RecursionError, UnicodeError) as exc:
        raise InputError(str(exc)) from exc


def exact(obj, required, optional=()):
    if type(obj) is not dict:
        raise InputError("expected object")
    keys = set(obj)
    if not set(required) <= keys or not keys <= set(required) | set(optional):
        raise InputError(f"unexpected or missing keys: {list(obj)}")


def integer(value, lower=0, upper=1000):
    if type(value) is not int or not lower <= value <= upper:
        raise InputError(f"expected integer in [{lower}, {upper}]")


def identifier(value):
    return type(value) is str and re.fullmatch(r"[A-Za-z][A-Za-z0-9_-]{0,63}", value)


def counts(obj, entities, complete=False, positive=False):
    if type(obj) is not dict or not set(obj) <= set(entities):
        raise InputError("count map contains unknown entities or is not an object")
    if complete and set(obj) != set(entities):
        raise InputError("complete inventory required")
    for value in obj.values():
        integer(value, int(positive))


def invariant(world, inventory):
    c = world["constraints"]
    return (all(v >= 0 for v in inventory.values())
            and sum(inventory.values()) <= c["inventory_cap"]
            and all(inventory[k] >= v for k, v in c["minimum"].items())
            and all(inventory[k] <= v for k, v in c["maximum"].items()))


def validate_world(world):
    exact(world, ("schema_version", "id", "entities", "initial", "actions",
                  "goal", "constraints", "budget"))
    if world["schema_version"] != VERSION or not identifier(world["id"]):
        raise InputError("unsupported world version or invalid id")
    entities = world["entities"]
    if (type(entities) is not list or not 1 <= len(entities) <= 32
            or not all(identifier(e) for e in entities)
            or len(set(entities)) != len(entities)):
        raise InputError("entities must be distinct identifiers")
    counts(world["initial"], entities, complete=True)
    counts(world["goal"], entities, complete=True)
    ops = world["actions"]
    if (type(ops) is not dict or not 1 <= len(ops) <= 32
            or not all(identifier(a) for a in ops)):
        raise InputError("actions must be named primitive objects")
    for op in ops.values():
        exact(op, ("consume", "require", "produce", "cost"))
        for key in ("consume", "require", "produce"):
            counts(op[key], entities, positive=True)
        if set(op["require"]) & (set(op["consume"]) | set(op["produce"])):
            raise InputError("retained catalysts cannot be consumed or produced")
        if not op["consume"] and not op["produce"]:
            raise InputError("primitive must have an inventory effect")
        integer(op["cost"], 0, 10000)
    c = world["constraints"]
    exact(c, ("inventory_cap", "minimum", "maximum"))
    integer(c["inventory_cap"])
    counts(c["minimum"], entities)
    counts(c["maximum"], entities)
    b = world["budget"]
    exact(b, ("max_actions", "max_cost"))
    integer(b["max_actions"], 0, 64)
    integer(b["max_cost"], 0, 100000)
    if not invariant(world, world["initial"]):
        raise InputError("initial state violates an invariant")
    if not invariant(world, world["goal"]):
        raise InputError("goal violates a static invariant")


def load_world(path):
    world = parse_json(Path(path).read_text(encoding="utf-8"))
    validate_world(world)
    return world


def grade(world, output):
    """Grade raw model JSON without repair; traces are evaluator-only."""
    validate_world(world)
    inventory = dict(world["initial"])
    cost = executed = 0
    def result(passed, failure=None, step=None, detail=None):
        return {"pass": passed, "failure": failure, "step": step,
                "detail": detail, "actions_executed": executed,
                "cost": cost, "final_inventory": dict(inventory)}
    try:
        answer = parse_json(output)
        exact(answer, ("actions",))
        if type(answer["actions"]) is not list:
            raise InputError("actions must be an array")
        if not all(identifier(a) for a in answer["actions"]):
            raise InputError("actions must contain primitive identifiers")
    except InputError as exc:
        return result(False, "schema", detail=str(exc))
    for step, name in enumerate(answer["actions"], 1):
        if name not in world["actions"]:
            return result(False, "entity", step, "unknown primitive")
        op = world["actions"][name]
        if (step > world["budget"]["max_actions"]
                or cost + op["cost"] > world["budget"]["max_cost"]):
            return result(False, "budget", step, "hard budget exceeded")
        if any(inventory[k] < v for k, v in op["require"].items()):
            return result(False, "transition", step, "missing retained catalyst")
        if any(inventory[k] < v for k, v in op["consume"].items()):
            return result(False, "transition", step, "missing consumable")
        successor = dict(inventory)
        for key, value in op["consume"].items():
            successor[key] -= value
        for key, value in op["produce"].items():
            successor[key] += value
        if not invariant(world, successor):
            return result(False, "constraint", step, "successor violates invariant")
        inventory = successor
        cost += op["cost"]
        executed += 1
    if inventory != world["goal"]:
        return result(False, "goal", detail="exact final inventory not achieved")
    return result(True)


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    sub = parser.add_subparsers(dest="command", required=True)
    for command in ("inspect", "grade", "solve"):
        item = sub.add_parser(command)
        item.add_argument("world", type=Path)
        if command == "grade":
            item.add_argument("answer", type=Path)
        if command == "solve":
            item.add_argument("--max-nodes", type=int, default=100000)
    sub.add_parser("self-test")
    args = parser.parse_args()
    if args.command == "self-test":
        import unittest
        suite = unittest.defaultTestLoader.discover(
            str(Path(__file__).resolve().parent / "tests"))
        return 0 if unittest.TextTestRunner(verbosity=2).run(suite).wasSuccessful() else 1
    try:
        world = load_world(args.world)
        if args.command == "inspect":
            value = {k: world[k] for k in ("id", "schema_version", "entities", "goal", "budget")}
            value["primitive_names"] = list(world["actions"])
        elif args.command == "grade":
            value = grade(world, args.answer.read_text(encoding="utf-8"))
        else:
            from oracle import solve
            value = solve(world, args.max_nodes)
        print(json.dumps(value, indent=2, sort_keys=True))
        return 0 if args.command != "grade" or value["pass"] else 1
    except (InputError, OSError, UnicodeError) as exc:
        print(json.dumps({"harness_error": str(exc)}), file=sys.stderr)
        return 2


if __name__ == "__main__":
    raise SystemExit(main())
Source History & Provenance

Publication and source

Public record
Selected public export · Scientific maturity is recorded separately.
Repository source
projects/fiction/evaluations/fiction-cwr-v0.1/harness.py
Website snapshot
2026-10-25 (UTC)
Source date
No explicit date field is recorded in the source.
Version
No explicit version field is recorded in the source.

Download original file

The downloadable file preserves the selected source bytes.

Byte integrity

Download SHA-256: 8aa1d402dd9b663a0922f61984c0cfde5eeb9a5cab127190df0a1c6754b1d6b7

The checksum covers the exact downloadable bytes, not the rendered HTML. It supports byte comparison; it is not a signature or an independent validation of the research.

Historical statements retain their original scope and dates. A source discussion or internal decision does not establish an empirical result. Unselected or restricted records remain unavailable in this export.