File size: 9,339 Bytes
5d10875
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
"""Worked example: pedestrian -> construction cone at ~0.01%.

Runs the full five-layer pipeline on the seeded synthetic population,
through evidence aggregation, analysis, the deterministic launch decision, a
recorded (clearly demo-labeled) human review and the learning flywheel, and
assembles a walkthrough where EVERY value is labeled:

    OBSERVED           measured on the seeded synthetic run
    HYPOTHETICAL       an agent hypothesis, unverified
    REQUIRED-EVIDENCE  evidence that does not exist and would be required

The walkthrough is deterministic for a fixed seed.
"""

from __future__ import annotations

from typing import Dict, Optional

from sensorflow.agentic import METHODOLOGY_PROVENANCE
from sensorflow.agentic import data as data_mod
from sensorflow.agentic import flywheel as flywheel_mod
from sensorflow.agentic import pipeline as pipeline_mod
from sensorflow.agentic import review as review_mod
from sensorflow.agentic import store as store_mod

WORKED_EXAMPLE_SEED = data_mod.DEFAULT_SEED
DEMO_REVIEWER = "safety-reviewer-demo"


def _find_ped_cone_failure() -> Optional[Dict]:
    for doc in pipeline_mod.list_failures():
        if (doc.get("gt_class") == "pedestrian"
                and doc.get("predicted_class") == "construction_cone"):
            return doc
    return None


def run_worked_example(seed: int = WORKED_EXAMPLE_SEED,
                       use_llm: bool = False) -> Dict:
    # Layer 1 — detection (idempotent: reuse an existing detection if present)
    existing = _find_ped_cone_failure()
    if existing is None:
        pipeline_mod.detect_failures(seed=seed, use_llm=use_llm)
        existing = _find_ped_cone_failure()
    if existing is None:
        raise RuntimeError("worked example: pedestrian->cone pattern not "
                           "detected on the seeded population")
    fid = existing["failure_id"]
    failure = pipeline_mod.get_failure(fid)
    state = pipeline_mod.get_state(fid)

    # Layers 2-4
    for stage in ("EVIDENCE_AGGREGATION", "FAILURE_ANALYSIS", "LAUNCH_DECISION"):
        if state.stage_record(stage).status == "pending":
            state = pipeline_mod.run_stage(fid, stage, seed=seed, use_llm=use_llm)
    failure = pipeline_mod.get_failure(fid)
    evaluation = state.policy_evaluation or {}

    # Human review (demo decision, clearly labeled as such)
    if not failure.validated:
        review_mod.record_decision(
            failure, reviewer=DEMO_REVIEWER, decision="confirm_failure",
            rationale=("DEMO WALKTHROUGH DECISION: replay evidence shows "
                       "unsafe delayed braking; statistics significant; "
                       "confirming the failure as real for the worked example"),
            evidence_reviewed=["evidence_graph", "statistical_assessment",
                               "safety_replays", "concentration_analysis"],
            policy_version=evaluation.get("policy_version", ""))
        failure.validated = True
        pipeline_mod.save_failure(failure)
        store_mod.audit("failure_validated", fid, DEMO_REVIEWER,
                        detail="confirm_failure (worked-example demo reviewer)")

    # Layer 5 — flywheel
    if state.stage_record("LEARNING_FLYWHEEL").status in ("pending", "blocked"):
        state.stage_record("LEARNING_FLYWHEEL").status = "pending"
        pipeline_mod.save_state(state)
        pipeline_mod.run_stage(fid, "LEARNING_FLYWHEEL", seed=seed,
                               use_llm=use_llm)
        state = pipeline_mod.get_state(fid)

    regression = flywheel_mod.regression_evaluate(seed=seed)

    # ---- assemble the labeled walkthrough ------------------------------
    stat = state.statistical
    conc = state.concentration
    safety = state.agent_results.get("safety_impact")
    fusion = state.agent_results.get("sensor_fusion_verification")
    mining = state.agent_results.get("scenario_mining")
    vlm = state.agent_results.get("vlm_scene_analysis")

    def L(label: str, value) -> Dict:
        return {"label": label, "value": value}

    walkthrough = {
        "methodology_provenance": METHODOLOGY_PROVENANCE,
        "seed": seed,
        "deterministic": True,
        "failure_id": fid,
        "title": failure.title,
        "layers": {
            "1_failure_detection": {
                "candidate_events": L("OBSERVED",
                                      failure.detection_basis.candidate_events),
                "baseline_events": L("OBSERVED",
                                     failure.detection_basis.baseline_events),
                "denominator": L("OBSERVED", failure.detection_basis.denominator),
                "observed_rate": L("OBSERVED",
                                   failure.detection_basis.candidate_rate),
                "headline": L("OBSERVED",
                              f"~{failure.detection_basis.candidate_rate:.4%} "
                              "pedestrian->construction_cone rate on the "
                              "candidate model"),
                "scene_instances_captured": L("OBSERVED", len(failure.instances)),
            },
            "2_evidence_aggregation": {
                "evidence_graph_nodes": L(
                    "OBSERVED",
                    [{"type": n["node_type"], "status": n["status"]}
                     for n in (store_mod.read_json(
                         "evidence", f"{fid}.json") or {}).get("nodes", [])]),
                "snippets_built": L("OBSERVED", len(pipeline_mod.get_snippets(fid))),
                "temporal_context": L("OBSERVED",
                                      "before/failure/after frames captured "
                                      "per snippet"),
            },
            "3_failure_analysis": {
                "statistics": L("OBSERVED", stat.model_dump() if stat else None),
                "concentration": L("OBSERVED", {
                    "determination": conc.determination if conc else None,
                    "concentrated_dimensions": (conc.concentrated_dimensions
                                                if conc else []),
                    "construction_stratum": next(
                        (s.model_dump() for s in (conc.strata if conc else [])
                         if s.stratum == "construction"), None),
                }),
                "fusion_verdict": L("OBSERVED",
                                    fusion.output.get("overall_verdict")
                                    if fusion else None),
                "novelty": L("OBSERVED",
                             mining.output.get("novelty") if mining else None),
                "scene_hypotheses": L("HYPOTHETICAL",
                                      (vlm.output.get("hypotheses", [])[:3]
                                       if vlm else [])),
                "safety_chain": L("OBSERVED",
                                  safety.output.get("chain") if safety else None),
                "replay_worst_case": L("OBSERVED",
                                       safety.output.get("worst_case")
                                       if safety else None),
                "replay_coverage": L("REQUIRED-EVIDENCE",
                                     safety.output.get("coverage_note")
                                     if safety else "no safety agent output"),
            },
            "4_launch_decision": {
                "policy_version": L("OBSERVED", evaluation.get("policy_version")),
                "severity": L("OBSERVED", evaluation.get("severity")),
                "outcome": L("OBSERVED", evaluation.get("outcome")),
                "recommended_option": L("OBSERVED",
                                        evaluation.get("recommended_option")),
                "matrix_row_fired": L("OBSERVED", evaluation.get("matrix_row_fired")),
                "option_c_rejection": L(
                    "REQUIRED-EVIDENCE",
                    [c for c in (evaluation.get("option_c_evaluation") or {})
                     .get("checks", []) if not c.get("passed")]),
                "expected_loss_table": L("HYPOTHETICAL",
                                         evaluation.get("expected_loss_table")),
                "mandatory_review_triggers": L(
                    "OBSERVED",
                    [t for t in evaluation.get("mandatory_review_triggers", [])
                     if t["fired"]]),
                "human_review": L("OBSERVED", review_mod.decisions_for(fid)),
            },
            "5_learning_flywheel": {
                "suites_created": L("OBSERVED", state.suite_ids),
                "regression_hook": L("OBSERVED", regression.get("suites")),
            },
        },
        "scorecard_id": state.scorecard_id,
        "audit_records": L("OBSERVED", len(store_mod.audit_trail(fid))),
        "audit_chain_valid": L("OBSERVED",
                               store_mod.verify_audit_chain(fid).get("valid")),
        "separation_of_powers": (
            "agents produced hypotheses and advisory summaries only; rates, "
            "CIs, significance, severity, the policy outcome and the option "
            "recommendation above all came from deterministic code, and the "
            "final validation was a recorded human decision"),
    }
    store_mod.write_json(walkthrough, "worked_example", "latest.json")
    return walkthrough