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
This commit is contained in:
tegwick 2026-08-23 00:21:48 +02:00
parent b9ad259468
commit eee7722714
28 changed files with 794 additions and 10 deletions

View file

@ -51,6 +51,29 @@ def baseline_recordings() -> dict[str, str]:
return record_baseline_selectors(html)
def build_crystallized(app, tokens, base_url, trajectories):
"""The same asset, frozen: no discovery, no runtime, no model.
Identical use case, identical claims, identical observer. Only the driver
differs which is the entire content of the crystallization claim.
"""
from testdriver.browser import Session
from testdriver.crystallization import CrystallizedDriver
world, _, observer, asset, oracle = build_agentic(app, tokens, base_url)
driver = CrystallizedDriver(
trajectories,
session_factory=lambda actor: Session(base_url, tokens[actor.id]),
)
descendant = VerificationAsset(
id="va-grant-crystallized",
scenario=asset.scenario,
maturity="T5",
parent_id=asset.id,
)
return world, driver, observer, descendant, oracle
def build_agentic(app, tokens, base_url, runtime=None):
"""One agentic step; deterministic oracles unchanged."""
cast = Cast()