- harness/es.py: append-only event store + проекции (образец — кооп-портал) - harness/levels.py: уровни 1с/1м/1ч/1д, контекст ∝ масштабу - harness/scheduler.py: уровневые потоки, идемпотентные тики, absorbed-стабы - harness/isolated_runner.py + _llm_worker.py: LLM-тик в сабпроцессе (глобальный asyncio-рантайм Strands не переживает 2+ create_harness) - cli.py: init/task/tasks/status/events + requeue (написан самим минутным агентом) - 9router: отдельный ключ sk-simbiot, модель auto (glm-5.3 первым)
50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
"""
|
|
Fuzzing setup for OSS-Fuzz.
|
|
|
|
See https://github.com/google/oss-fuzz/tree/master/projects/jsonschema for the
|
|
other half of the setup here.
|
|
"""
|
|
import sys
|
|
|
|
from hypothesis import given, strategies
|
|
|
|
import jsonschema
|
|
|
|
PRIM = strategies.one_of(
|
|
strategies.booleans(),
|
|
strategies.integers(),
|
|
strategies.floats(allow_nan=False, allow_infinity=False),
|
|
strategies.text(),
|
|
)
|
|
DICT = strategies.recursive(
|
|
base=strategies.one_of(
|
|
strategies.booleans(),
|
|
strategies.dictionaries(strategies.text(), PRIM),
|
|
),
|
|
extend=lambda inner: strategies.dictionaries(strategies.text(), inner),
|
|
)
|
|
|
|
|
|
@given(obj1=DICT, obj2=DICT)
|
|
def test_schemas(obj1, obj2):
|
|
try:
|
|
jsonschema.validate(instance=obj1, schema=obj2)
|
|
except jsonschema.exceptions.ValidationError:
|
|
pass
|
|
except jsonschema.exceptions.SchemaError:
|
|
pass
|
|
|
|
|
|
def main():
|
|
atheris.instrument_all()
|
|
atheris.Setup(
|
|
sys.argv,
|
|
test_schemas.hypothesis.fuzz_one_input,
|
|
enable_python_coverage=True,
|
|
)
|
|
atheris.Fuzz()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import atheris
|
|
main()
|