test-driver/crystallized/conftest.py
tegwick eee7722714 T09: crystallization
A stable agentic realization becomes deterministic code. All four exit
criteria met; 163 tests pass.

- crystallization.py: trajectory capture, stability assessment requiring the
  same path across several runs, CrystallizedDriver, pytest codegen
- crystallized/test_grant_access.py: generated, runs with no model, carries
  its lineage in the docstring
- descendant preserves the ancestor's oracle set, agrees with it across five
  lab versions, and still catches a seeded defect
- reversibility shown both ways via new M24 (grant endpoint renamed): the
  frozen descendant fails loudly rather than searching, and the agentic
  ancestor recovers from the same mutation

F-0007 (open): the 54% cost reduction must not be quoted in support of the
thesis. The T07 runtime is token-free, so the measured saving is one page
fetch, one parse and a two-candidate scoring pass. The saving the concept
actually claims - tokens, latency, retry variance - is unmeasured. Together
with F-0005 this makes a bounded live-model experiment the highest-value next
investment.

Assertions in the generated test are imported rather than restated, so it is
not fully standalone. Deliberate: paraphrased claims would be a second
unverified statement of intent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1629012@bnt-lap001
Assistant-Session: 78d4fb13-8a1e-474b-87a3-9b9261c49a39
2026-08-23 00:21:48 +02:00

39 lines
1.2 KiB
Python

"""Fixtures for crystallized regression tests.
The only framework code a crystallized test touches is the observation channel —
because judging still requires observing the system independently, whether or not
a model was involved in getting there (D-07). Nothing here discovers anything.
"""
from __future__ import annotations
import threading
import pytest
from lab.http_api import serve
from lab.mutations import ObservationChannel, build_lab
from testdriver.observers import StateObserver, Watch
@pytest.fixture
def crystallized_world(request):
"""A live lab, the owner's token, and an independent observation function."""
mutations = getattr(request, "param", ())
app, tokens = build_lab(*mutations)
app.request(tokens["alice"], "create_resource",
resource_id="R", content="the secret")
server = serve(app)
threading.Thread(target=server.serve_forever, daemon=True).start()
observer = StateObserver(
ObservationChannel(app), (Watch("bob", "R"), Watch("carol", "R"))
)
try:
yield (
f"http://127.0.0.1:{server.server_address[1]}",
tokens["alice"],
observer.snapshot,
)
finally:
server.shutdown()
server.server_close()