Member Junction
    Preparing search index...
    • Two-phase compliance runner (§3.3). Runs scenario (which returns the persisted root run ID or undefined), then evaluates isCompliant from persisted artifacts (Phase P). On non-compliance it retries with a fresh scenario up to maxAttempts total, then throws model-noncompliance:. The FIRST compliant attempt's run ID is returned so Phase A (framework assertions, never retried) runs against a run that provably attempted the guarded behavior — the anti-vacuity guarantee.

      Parameters

      • scenario: () => Promise<string | undefined>
      • isCompliant: (rootRunId: string) => Promise<boolean>
      • label: string
      • maxAttempts: number = 3
      • Optionaldiagnose: (rootRunId: string) => Promise<string>

        Optional evidence dump for the FINAL failed attempt, appended to the thrown message.

        A bare model-noncompliance: says only "the model didn't do it" — and the fixtures are purged at teardown, so nothing can be re-queried afterwards to find out WHY. Without this, "the model declined" is indistinguishable from "the tool was never advertised" or "the response came back empty", which is precisely how three real product defects hid behind this prefix during the 6.1 release. Must never throw: a failing diagnostic must not replace the failure it is describing.

      Returns Promise<string>