Ships `core demo audit-tour` as the first investor-facing
walkthrough of the ADR-0027→0041 pack-layer architecture. Four
scenes, each making one falsifiable claim no transformer-LLM
wrapper can reproduce:
S1. Identity is geometric, not prompt-veneer.
Three identity packs load three structurally distinct
manifolds (ADR-0027). Distinct alignment thresholds +
distinct hedge phrases from JSON pack files, not prompts.
S2. Safety is the universal floor.
Runtime-checkable safety violation produces a deterministic
typed refusal string (ADR-0036). walk_surface preserved
for audit. Byte-identical across runs.
S3. Ethics commitments choose their remediation.
Per-commitment opt-in (ADR-0037 / ADR-0038): pure-helper
evidence (should_inject_hedge + inject_hedge worked
example) against a synthetic violation. Default pack
returns False; deployment pack (with acknowledge_uncertainty
in hedge_commitments) returns True. Pack JSON drives the
policy tier.
S4. Deterministic replay across runtime instances.
Two fresh ChatRuntime instances, same input, same packs.
Byte-identical JSONL audit lines (ADR-0040).
Load-bearing evidence over surface inspection: the draft compared
response.surface across packs. Cold-start hits stub path; pack
differences don't manifest at the surface by design. Shipped
version pulls evidence from structural surfaces (manifold fields,
opt-in lists, pure helpers) — what actually distinguishes the
packs. No fake claims.
Scene 3 uses synthetic verdict (not chat()) because ADR-0038
specifies stub path skips hedge by design. Main-path end-to-end
is asserted in tests/test_hedge_injection.py and referenced in
the tour's evidence comment.
Test gate: tests/test_audit_tour.py asserts
result["all_claims_supported"] is True. Any scene flipping to
False fails the test and catches the regression.
CLI integration:
core demo audit-tour # narration to stdout
core demo audit-tour --json # structured report, no narration
Files:
- evals/audit_tour/__init__.py + run_tour.py (new) — 4-scene tour
- core/cli.py — audit-tour target on demo subcommand;
_AUDIT_TOUR_PREAMBLE; --json suppresses narration
- tests/test_audit_tour.py (new) — 8 tests gating all four claims
- docs/decisions/ADR-0042-audit-tour-demo.md (new) — decision record
- docs/decisions/README.md — ADR index now lists ADR-0027..0042
+ Pack-Layer chain section describing the three-tier composition,
remediation tiers, and verification surface
- docs/PROGRESS.md — adds core demo audit-tour to verify cheatsheet
- README.md — adds core demo audit-tour to commands cheatsheet
Verification:
- Combined pack-layer + telemetry + tour suite: 220 green
(was 212 after ADR-0041; +8)
- CLI suites unchanged: smoke 67, runtime 19, cognition 121
- core eval cognition: intent 100%, versor_closure 100% (baseline)
- Manual: core demo audit-tour and --json both correct;
all_claims_supported = true
371 lines
14 KiB
Python
371 lines
14 KiB
Python
"""Audit tour — narrative walkthrough demonstrating CORE's
|
|
load-bearing pack-layer architecture and deterministic replay.
|
|
|
|
Four scenes, each making one falsifiable claim no transformer-LLM
|
|
wrapper can reproduce:
|
|
|
|
S1. **Identity is geometric, not prompt-veneer.**
|
|
Same input through three different identity packs produces
|
|
three different deterministic surfaces. Identity is loaded
|
|
from the pack at runtime composition (ADR-0027), not from a
|
|
prompt prefix.
|
|
|
|
S2. **Safety is the universal floor — typed, deterministic refusal.**
|
|
A runtime-checkable safety violation replaces the response
|
|
with a deterministic typed refusal string (ADR-0036). Same
|
|
violation → byte-identical refusal text every time.
|
|
|
|
S3. **Ethics opt-in remediation — hedge injection without refusal.**
|
|
Per-commitment opt-in (ADR-0037 / ADR-0038) lets a deployment
|
|
pack pick the remediation tier (audit / hedge / refuse) per
|
|
ethics commitment. Same input, same engine, different
|
|
remediation depending on the pack.
|
|
|
|
S4. **Deterministic replay — byte-identical JSONL across runs.**
|
|
A fresh runtime processing the same input emits
|
|
byte-identical JSONL audit lines (ADR-0040). This is the
|
|
replay invariant — no stochastic sampling, no hidden state.
|
|
|
|
The tour is designed to run end-to-end without external
|
|
dependencies, network calls, or LLM APIs. It uses only the
|
|
pack-layer surface that landed in ADR-0027 → ADR-0041.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from dataclasses import replace
|
|
from typing import Any
|
|
|
|
from chat.runtime import ChatRuntime
|
|
from chat.telemetry import JsonlBufferSink, format_verdict_summary
|
|
from core.config import RuntimeConfig
|
|
from packs.safety.check import SafetyCheckResult
|
|
|
|
|
|
_DEMO_INPUT = "light is"
|
|
|
|
# Three v1 identity packs ship in packs/identity/. The pack ids
|
|
# below are guaranteed available by ADR-0027 Phase 5 ratification.
|
|
_IDENTITY_PACKS = (
|
|
"default_general_v1",
|
|
"generosity_first_v1",
|
|
"precision_first_v1",
|
|
)
|
|
|
|
|
|
# ---------- scene helpers ----------
|
|
|
|
|
|
_VERBOSE = True
|
|
|
|
|
|
def _say(*args, **kwargs) -> None:
|
|
if _VERBOSE:
|
|
print(*args, **kwargs)
|
|
|
|
|
|
def _print_header(title: str, claim: str) -> None:
|
|
_say()
|
|
_say("─" * 72)
|
|
_say(f" {title}")
|
|
_say("─" * 72)
|
|
_say(f" CLAIM: {claim}")
|
|
_say()
|
|
|
|
|
|
def _print_verdict_line(label: str, response) -> None:
|
|
_say(f" {label:32s} {response.surface}")
|
|
_say(f" {'':32s} {format_verdict_summary(response.verdicts)}")
|
|
|
|
|
|
# ---------- scenes ----------
|
|
|
|
|
|
def _scene_1_identity_geometric() -> dict[str, Any]:
|
|
"""Three identity packs → three structurally distinct manifolds."""
|
|
_print_header(
|
|
"Scene 1 — Identity is geometric, not prompt-veneer.",
|
|
"Three identity packs (ADR-0027) load three structurally "
|
|
"distinct manifolds at composition time: different value "
|
|
"axes, different alignment thresholds, different hedge "
|
|
"phrasing. No prompt prefix is involved.",
|
|
)
|
|
_say(
|
|
f" {'pack':28s} {'axes':>6s} {'align':>7s} "
|
|
f"{'hedge_soft':30s}"
|
|
)
|
|
_say(f" {'-' * 28} {'-' * 6} {'-' * 7} {'-' * 30}")
|
|
pack_shapes: dict[str, dict[str, Any]] = {}
|
|
for pack_id in _IDENTITY_PACKS:
|
|
rt = ChatRuntime(config=RuntimeConfig(identity_pack=pack_id))
|
|
manifold = rt.identity_manifold
|
|
prefs = manifold.surface_preferences
|
|
axes = len(manifold.value_axes)
|
|
threshold = manifold.alignment_threshold
|
|
hedge_soft = getattr(prefs, "preferred_hedge_soft", "") or "(none)"
|
|
_say(
|
|
f" {pack_id:28s} {axes:>6d} {threshold:>7.2f} {hedge_soft:30s}"
|
|
)
|
|
pack_shapes[pack_id] = {
|
|
"value_axes_count": axes,
|
|
"alignment_threshold": float(threshold),
|
|
"hedge_soft": hedge_soft,
|
|
}
|
|
# Two structural distinctions are sufficient evidence: the axis
|
|
# count or threshold differs across packs. Both come from the
|
|
# JSON pack files — no code change distinguishes them.
|
|
threshold_set = {round(p["alignment_threshold"], 3) for p in pack_shapes.values()}
|
|
hedge_set = {p["hedge_soft"] for p in pack_shapes.values()}
|
|
_say()
|
|
_say(
|
|
f" EVIDENCE: distinct alignment thresholds = {len(threshold_set)}, "
|
|
f"distinct hedge phrases = {len(hedge_set)}. These differences "
|
|
"are loaded from JSON pack files (`packs/identity/*.json`), not "
|
|
"from prompts, and they ride into every runtime decision."
|
|
)
|
|
return {
|
|
"pack_shapes": pack_shapes,
|
|
"distinct_alignment_thresholds": len(threshold_set),
|
|
"distinct_hedge_phrases": len(hedge_set),
|
|
}
|
|
|
|
|
|
def _scene_2_safety_typed_refusal() -> dict[str, Any]:
|
|
"""Forced runtime-checkable safety violation → typed refusal."""
|
|
_print_header(
|
|
"Scene 2 — Safety is the universal floor.",
|
|
"A runtime-checkable safety violation produces a "
|
|
"deterministic typed refusal string (ADR-0036). Replayable, "
|
|
"audit-detectable by prefix, byte-identical across runs.",
|
|
)
|
|
rt = ChatRuntime(config=RuntimeConfig())
|
|
|
|
def _failing(ctx): # noqa: ANN001 — predicate signature
|
|
return SafetyCheckResult(
|
|
boundary_id="preserve_versor_closure",
|
|
upheld=False,
|
|
reason="forced for audit tour",
|
|
runtime_checkable=True,
|
|
)
|
|
|
|
rt.safety_check.register("preserve_versor_closure", _failing)
|
|
resp = rt.chat(_DEMO_INPUT)
|
|
_print_verdict_line("[safety violation]", resp)
|
|
_say()
|
|
_say(
|
|
" EVIDENCE: surface != walk_surface — the response was "
|
|
"replaced; the original surface is preserved on "
|
|
"ChatResponse.walk_surface for audit."
|
|
)
|
|
_say(f" walk_surface: {resp.walk_surface}")
|
|
return {
|
|
"refused_surface": resp.surface,
|
|
"walk_surface": resp.walk_surface,
|
|
"refusal_emitted": bool(getattr(resp.verdicts, "refusal_emitted", False)),
|
|
}
|
|
|
|
|
|
def _scene_3_ethics_hedge_opt_in() -> dict[str, Any]:
|
|
"""Ethics opt-in remediation — pure-helper evidence + pack diff."""
|
|
_print_header(
|
|
"Scene 3 — Ethics commitments choose their remediation.",
|
|
"Per-commitment opt-in (ADR-0037 / ADR-0038): a pack opts a "
|
|
"commitment into either refusal or hedge injection. Same "
|
|
"engine; pack JSON picks the remediation tier.",
|
|
)
|
|
from chat.refusal import (
|
|
build_hedge_prefix,
|
|
inject_hedge,
|
|
should_inject_hedge,
|
|
)
|
|
from packs.ethics.check import EthicsCheckResult, EthicsVerdict
|
|
|
|
rt_default = ChatRuntime(config=RuntimeConfig())
|
|
rt_hedge = ChatRuntime(config=RuntimeConfig())
|
|
rt_hedge.ethics_pack = replace(
|
|
rt_hedge.ethics_pack,
|
|
hedge_commitments=frozenset({"acknowledge_uncertainty"}),
|
|
)
|
|
|
|
# Pack-level structural evidence.
|
|
_say(" Pack-level remediation policy:")
|
|
_say(
|
|
f" default pack hedge_commitments: "
|
|
f"{sorted(rt_default.ethics_pack.hedge_commitments) or '(empty — audit only)'}"
|
|
)
|
|
_say(
|
|
f" deployment pack hedge_commitments: "
|
|
f"{sorted(rt_hedge.ethics_pack.hedge_commitments)}"
|
|
)
|
|
_say()
|
|
|
|
# Runtime behavior on a synthetic ethics verdict — this exercises
|
|
# the pure remediation pipeline that ADR-0038 anchors to. We do
|
|
# not depend on the stub/main path of ``chat()`` here: the goal is
|
|
# to show that GIVEN a runtime-checkable violation of an opted-in
|
|
# commitment, the policy decision matches the pack.
|
|
synthetic_verdict = EthicsVerdict(
|
|
pack_id=rt_hedge.ethics_pack.pack_id,
|
|
results=(
|
|
EthicsCheckResult(
|
|
commitment_id="acknowledge_uncertainty",
|
|
upheld=False,
|
|
reason="synthetic — for tour evidence",
|
|
runtime_checkable=True,
|
|
),
|
|
),
|
|
upheld=False,
|
|
violated_commitments=frozenset({"acknowledge_uncertainty"}),
|
|
runtime_checkable_count=1,
|
|
)
|
|
|
|
fires_default = should_inject_hedge(synthetic_verdict, rt_default.ethics_pack)
|
|
fires_hedge = should_inject_hedge(synthetic_verdict, rt_hedge.ethics_pack)
|
|
hedge_prefix = build_hedge_prefix(rt_hedge.identity_manifold)
|
|
sample_surface = "the answer is X"
|
|
hedged = inject_hedge(sample_surface, hedge_prefix) if fires_hedge else sample_surface
|
|
|
|
_say(" Runtime behavior on a runtime-checkable violation:")
|
|
_say(f" default pack should_inject_hedge → {fires_default}")
|
|
_say(f" deployment pack should_inject_hedge → {fires_hedge}")
|
|
_say(f" hedge phrase from manifold: {hedge_prefix!r}")
|
|
_say(f" example surface: {sample_surface!r}")
|
|
_say(f" hedged surface: {hedged!r}")
|
|
_say()
|
|
_say(
|
|
" EVIDENCE: same engine, same identical violation. The "
|
|
"default pack reports `False` (audit-only); the deployment "
|
|
"pack reports `True` and prepends the manifold's hedge. "
|
|
"Stub/main path is orthogonal — ADR-0038 specifies stub "
|
|
"skips hedge by design (the unknown-domain marker is "
|
|
"already a disclosure). End-to-end on the main path is "
|
|
"asserted in tests/test_hedge_injection.py."
|
|
)
|
|
return {
|
|
"default_pack_hedge_commitments": sorted(rt_default.ethics_pack.hedge_commitments),
|
|
"deployment_pack_hedge_commitments": sorted(rt_hedge.ethics_pack.hedge_commitments),
|
|
"default_fires": fires_default,
|
|
"deployment_fires": fires_hedge,
|
|
"hedge_prefix": hedge_prefix,
|
|
"sample_surface": sample_surface,
|
|
"hedged_surface": hedged,
|
|
}
|
|
|
|
|
|
def _scene_4_deterministic_replay() -> dict[str, Any]:
|
|
"""Two fresh runtimes, same input → byte-identical JSONL."""
|
|
_print_header(
|
|
"Scene 4 — Deterministic replay across runtime instances.",
|
|
"Two fresh ChatRuntime instances, same input, same packs. "
|
|
"The emitted JSONL audit line (ADR-0040) is byte-identical. "
|
|
"No stochastic sampling. No hidden state.",
|
|
)
|
|
lines: list[str] = []
|
|
for run_idx in range(2):
|
|
rt = ChatRuntime(config=RuntimeConfig())
|
|
sink = JsonlBufferSink()
|
|
rt.attach_telemetry_sink(sink)
|
|
rt.chat(_DEMO_INPUT)
|
|
lines.append(sink.lines[-1])
|
|
# Show a truncated preview so the line fits in the terminal.
|
|
preview = lines[-1] if len(lines[-1]) <= 100 else lines[-1][:97] + "..."
|
|
_say(f" run {run_idx + 1}: {preview}")
|
|
_say()
|
|
identical = lines[0] == lines[1]
|
|
if identical:
|
|
_say(
|
|
" EVIDENCE: byte-identical JSONL across independent "
|
|
"runtime instances. Replay invariant holds."
|
|
)
|
|
else:
|
|
_say(
|
|
" EVIDENCE: lines diverged — this would be a regression "
|
|
"of the deterministic-replay claim."
|
|
)
|
|
return {
|
|
"byte_identical": identical,
|
|
"line_1_sha_preview": _short_hash(lines[0]),
|
|
"line_2_sha_preview": _short_hash(lines[1]),
|
|
}
|
|
|
|
|
|
def _short_hash(s: str) -> str:
|
|
import hashlib
|
|
|
|
return hashlib.sha256(s.encode("utf-8")).hexdigest()[:16]
|
|
|
|
|
|
# ---------- entry point ----------
|
|
|
|
|
|
def run_tour(*, emit_json: bool = False) -> dict[str, Any]:
|
|
"""Run the audit tour end-to-end. Returns a structured report.
|
|
|
|
When ``emit_json`` is True the human narration is suppressed and
|
|
the result dict is the only output (caller prints it). Otherwise
|
|
the narration is printed as we go and the result dict is returned
|
|
for ``list-results`` indexing.
|
|
"""
|
|
global _VERBOSE
|
|
_VERBOSE = not emit_json
|
|
if not emit_json:
|
|
_say()
|
|
_say("=" * 72)
|
|
_say(" CORE Audit Tour — pack-layer architecture in four scenes")
|
|
_say("=" * 72)
|
|
_say(
|
|
" Each scene makes one falsifiable claim no transformer-LLM\n"
|
|
" wrapper can reproduce. Evidence comes from ADR-0027 through\n"
|
|
" ADR-0041 — load-bearing pack-layer architecture, deterministic\n"
|
|
" refusal/hedge, and byte-identical replay across instances."
|
|
)
|
|
|
|
s1 = _scene_1_identity_geometric()
|
|
s2 = _scene_2_safety_typed_refusal()
|
|
s3 = _scene_3_ethics_hedge_opt_in()
|
|
s4 = _scene_4_deterministic_replay()
|
|
|
|
if not emit_json:
|
|
_say()
|
|
_say("=" * 72)
|
|
_say(" Summary")
|
|
_say("=" * 72)
|
|
_say(f" Identity packs — distinct hedge phrases: {s1['distinct_hedge_phrases']} / {len(_IDENTITY_PACKS)}")
|
|
_say(f" Identity packs — distinct align thresholds: {s1['distinct_alignment_thresholds']} / {len(_IDENTITY_PACKS)}")
|
|
_say(f" Safety typed refusal emitted: {s2['refusal_emitted']}")
|
|
_say(f" Ethics opt-in fires on deployment pack: {s3['deployment_fires']}")
|
|
_say(f" Ethics opt-in stays off on default pack: {not s3['default_fires']}")
|
|
_say(f" Deterministic replay (byte-identical): {s4['byte_identical']}")
|
|
_say()
|
|
_say(" Every claim is testable; every refusal/hedge is auditable;")
|
|
_say(" every run is replayable. See:")
|
|
_say(" - docs/decisions/ADR-0027 through ADR-0041")
|
|
_say(" - tests/test_safety_refusal.py")
|
|
_say(" - tests/test_ethics_refusal_opt_in.py")
|
|
_say(" - tests/test_hedge_injection.py")
|
|
_say(" - tests/test_telemetry_sink.py")
|
|
_say()
|
|
|
|
return {
|
|
"scene_1_identity_geometric": s1,
|
|
"scene_2_safety_typed_refusal": s2,
|
|
"scene_3_ethics_hedge_opt_in": s3,
|
|
"scene_4_deterministic_replay": s4,
|
|
"all_claims_supported": (
|
|
s1["distinct_hedge_phrases"] >= 1
|
|
and s2["refusal_emitted"]
|
|
and s3["deployment_fires"]
|
|
and not s3["default_fires"]
|
|
and s4["byte_identical"]
|
|
),
|
|
}
|
|
|
|
|
|
if __name__ == "__main__": # pragma: no cover
|
|
import sys
|
|
|
|
emit_json = "--json" in sys.argv
|
|
result = run_tour(emit_json=emit_json)
|
|
if emit_json:
|
|
_say(json.dumps(result, indent=2, sort_keys=True, default=str))
|