{"schema":"kinwit.report.v1","case_id":"SIM-2026-0002","generated_by":"kinwit-facts/0.1.0 deterministic template (no AI)","banner":"SYNTHETIC DEMONSTRATION · SIMULATED DATA · NOT A REAL INCIDENT","sections":[{"id":"scope","title":"Scope of analysis","paragraphs":["Case SIM-2026-0002 (scenario s01-ambiguous). Window: 14000.046 ms of robot recording on the ROBOT_ROS_TIME clock.","Sources: 9 robot topics (kinesim/0.1.0) and 23 facility controller records. Both sources are synthetic and were generated by logically separate components; neither is a physically independent witness."]},{"id":"chronology","title":"Recorded chronology","rows":[{"event_id":"E-002","t_ms":{"lo":199.978,"mid":200.028,"hi":200.078},"source_id":"robot-controller-sim","label":"Navigation goal executing","basis":"status publish time ± robot timestamp jitter"},{"event_id":"E-003","t_ms":{"lo":10984.245,"mid":11000.195,"hi":11016.146},"source_id":"facility-controller-sim","label":"Facility controller records zone safety input ESTOP-ZONE-B2 open","basis":"PLC scan timestamp: the input change happened up to one 4 ms scan earlier; mapped to the robot clock through the evidence-derived clock model"},{"event_id":"E-004","t_ms":{"lo":10989.05,"mid":11003,"hi":11016.95},"source_id":"facility-controller-sim","label":"Facility controller broadcasts stop request to zone approach group","basis":"send timestamp ± facility jitter and resolution; mapped to the robot clock through the evidence-derived clock model"},{"event_id":"E-005","t_ms":{"lo":11004.996,"mid":11007.546,"hi":11010.096},"source_id":"robot-controller-sim","label":"Robot safety I/O registers external stop input","basis":"input sampled by a 200 Hz poll: true arrival within one poll period before the stamp, ± jitter"},{"event_id":"E-006","t_ms":{"lo":11010.096,"mid":11010.146,"hi":11010.196},"source_id":"robot-controller-sim","label":"Robot safety controller starts Category-1 controlled stop","basis":"header stamp ± robot timestamp jitter"},{"event_id":"E-007","t_ms":{"lo":11049.948,"mid":11049.998,"hi":11050.048},"source_id":"robot-controller-sim","label":"Navigation goal aborted","basis":"status publish time ± robot timestamp jitter"},{"event_id":"E-008","t_ms":{"lo":11050.046,"mid":11050.046,"hi":11050.046},"source_id":"robot-controller-sim","label":"Zero velocity command recorded on /cmd_vel","basis":"MCAP publish time (Twist carries no header stamp)"},{"event_id":"E-009","t_ms":{"lo":11919.952,"mid":11930.003,"hi":11940.054},"source_id":"robot-controller-sim","label":"Odometry reports speed < 0.01 m/s held ≥ 200 ms","basis":"threshold crossing lies between the previous odometry sample and this one, ± jitter"},{"event_id":"E-010","t_ms":{"lo":12129.996,"mid":12130.046,"hi":12130.096},"source_id":"robot-controller-sim","label":"Robot safety controller reports drive power removed","basis":"header stamp ± robot timestamp jitter"}]},{"id":"facts","title":"Measured and derived facts","findings":[{"finding_id":"F-001","category":"observed_sequence","title":"Recorded sequence","statement":"E-003 Facility controller records zone safety input ESTOP-ZONE-B2 open → E-004 Facility controller broadcasts stop request to zone approach group → E-005 Robot safety I/O registers external stop input → E-008 Zero velocity command recorded on /cmd_vel → E-009 Odometry reports speed < 0.01 m/s held ≥ 200 ms. At least one step's order is not determinate within clock uncertainty.","variables":{"E-003→E-004":"BEFORE","E-004→E-005":"INDETERMINATE","E-005→E-008":"BEFORE","E-008→E-009":"BEFORE"},"formula":"pairwise interval relations along the chain","supporting_event_ids":["E-003","E-004","E-005","E-008","E-009"],"confidence_kind":"ordering_indeterminate","limitations":["event_order_is_not_causation","both_sources_are_synthetic"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-002","category":"cross_source","title":"Facility stop broadcast vs. robot stop input","statement":"The order of the facility stop broadcast (E-004) and the robot stop input (E-005) cannot be determined: the delta interval [-11.954, 21.046] ms spans zero.","variables":{"relation":"INDETERMINATE","delta_lo_ms":-11.954,"delta_hi_ms":21.046},"formula":"Δ = [SI.lo − FB.hi, SI.hi − FB.lo] on the robot clock; BEFORE iff FB.hi < SI.lo (Allen 1983, interval 'before')","supporting_event_ids":["E-004","E-005"],"confidence_kind":"ordering_indeterminate","limitations":["clock_alignment_depends_on_assumptions_A1_A3","event_order_is_not_causation","both_sources_are_synthetic"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-003","category":"cross_source","title":"Facility input change to robot stop input","statement":"Between the facility zone input change (E-003) and the robot stop input (E-005): -11.15 to 25.851 ms (indeterminate).","variables":{"relation":"INDETERMINATE","delta_lo_ms":-11.15,"delta_hi_ms":25.851},"formula":"Δ = [SI.lo − FI.hi, SI.hi − FI.lo]; FI interval includes one PLC scan of detection latency","supporting_event_ids":["E-003","E-005"],"confidence_kind":"bounded_interval_under_assumptions","limitations":["clock_alignment_depends_on_assumptions_A1_A3","plc_scan_latency_bound_is_declared_by_the_facility_source"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-004","category":"derived_measurement","title":"Reported speed at stop input","statement":"Wheel odometry reports 1.2 m/s when the stop input is registered (E-005), interpolated between /odom samples #550 (1.202 m/s) and #551 (1.198 m/s).","variables":{"speed_mps":1.2,"before_sample_mps":1.202,"after_sample_mps":1.198,"odom_before_index":550,"odom_after_index":551},"formula":"linear interpolation of /odom twist.linear.x at the stop-input stamp","supporting_event_ids":["E-005"],"confidence_kind":"derived_from_recorded_values","limitations":["odometry_reports_wheel_motion_not_ground_truth","simulated_sensor_noise"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-005","category":"derived_measurement","title":"Stop input to zero velocity command","statement":"The first zero velocity command (E-008) is recorded 40 ms after the stop input (E-005), same robot clock.","variables":{"latency_ms":40,"robot_jitter_bound_ms":0.05},"formula":"ZC.publish_time − SI.header.stamp (single clock domain; ± one jitter bound)","supporting_event_ids":["E-005","E-008"],"confidence_kind":"derived_from_recorded_values","limitations":["cmd_vel_has_no_header_stamp_publish_time_used","a_zero_command_is_not_physical_braking"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-006","category":"derived_measurement","title":"Stop input to reported stationary","statement":"Odometry reports the robot stationary (E-009) 909.857 to 935.058 ms after the stop input (E-005). Reported travel in that window: 0.549 m; mean reported deceleration 1.29 m/s².","variables":{"delta_lo_ms":909.857,"delta_hi_ms":935.058,"reported_distance_m":0.549,"mean_decel_mps2":1.29,"odom_samples":47},"formula":"Δ = [ST.lo − SI.hi, ST.hi − SI.lo]; distance = Σ‖pᵢ − pᵢ₋₁‖ over /odom poses in [SI, ST]; decel = v(SI) / (ST − SI)","supporting_event_ids":["E-005","E-009"],"confidence_kind":"derived_from_recorded_values","limitations":["reported_by_odometry_not_physical_stopping_distance","stationary_threshold_is_a_configured_parameter","simulated_sensor_noise"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-007","category":"derived_measurement","title":"Nearest lidar return when stationary","statement":"The /scan message nearest the reported stop (#119) has its closest return at 3.646 m, bearing -135° (robot frame).","variables":{"min_range_m":3.646,"bearing_deg":-135,"scan_index":119,"scan_byte_start":1104445},"formula":"argmin over LaserScan.ranges; bearing = angle_min + i·angle_increment","supporting_event_ids":["E-009"],"confidence_kind":"recorded_value","limitations":["simulated_lidar_ray_cast_not_a_real_sensor","a_return_is_not_an_identified_object","no_contact_sensor_present"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-008","category":"context","title":"Robot position relative to the facility zone","statement":"At the stop input the odometry pose is (9.24, 5.304) m, 1.96 m outside the mapped boundary of ZONE-B2.","variables":{"odom_x_m":9.24,"odom_y_m":5.304,"zone_id":"ZONE-B2","distance_to_zone_m":1.96,"inside_zone":false},"formula":"Euclidean distance from /odom position to the zone rectangle in the recorded map attachment","supporting_event_ids":["E-005"],"confidence_kind":"derived_from_recorded_values","limitations":["no_localization_stack_odom_frame_assumed_equal_to_map_frame","zone_geometry_is_synthetic"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-009","category":"clock","title":"Facility-to-robot clock offset (derived from evidence)","statement":"From 7 logged sync exchanges, the facility clock is 28.28 to 56.153 ms ahead of the robot clock at the stop input (width 27.873 ms); skew -200 to 200 ppm.","variables":{"offset_lo_ms":28.28,"offset_hi_ms":56.153,"width_ms":27.873,"skew_lo_ppm":-200,"skew_hi_ppm":200,"ls_offset_ms":45.291,"samples":7},"formula":"feasible region of θ(t)=a+b·t from strips θ(t0) ≤ t1−t0+ε, θ(t3) ≥ t2−t3−ε (RFC 5905 on-wire, Marzullo intersection); interval = min/max over polygon at t*","supporting_event_ids":["E-005"],"confidence_kind":"bounded_interval_under_assumptions","limitations":["assumes_A1_nonnegative_delay_A2_linear_drift_A3_declared_jitter","sync_exchanges_are_synthetic"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-012","category":"observed_sequence","title":"Navigation goal outcome","statement":"The navigation goal is recorded as ABORTED (E-007); drive power removal is reported at E-010.","variables":{"goal_status":"ABORTED"},"formula":"action_msgs/GoalStatus.status == 6","supporting_event_ids":["E-007","E-010"],"confidence_kind":"recorded_value","limitations":["status_codes_do_not_explain_why"],"derived_by":"kinwit-facts/0.1.0"}]},{"id":"gaps","title":"Gaps and limitations","findings":[{"finding_id":"F-010","category":"coverage","title":"Source coverage and evidence gaps","statement":"2 of 2 expected sources present. Not present in this case: camera, physical contact sensor, person detection, and the identity of whatever opened the facility input.","variables":{"sources_present":2,"sources_expected":2,"camera":false,"contact_sensor":false,"person_detection":false},"formula":"count of manifest sources vs. scenario expectation; absence list is fixed per source kinds","supporting_event_ids":["E-003","E-005"],"confidence_kind":"absence_of_signal","limitations":["coverage_is_not_completeness"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-011","category":"integrity","title":"Record continuity","statement":"/odom: 701 messages, largest gap 20.095 ms (nominal 20 ms). Facility log: 23 records, sequence contiguous, hash chain checked separately by the verifier.","variables":{"odom_messages":701,"odom_max_gap_ms":20.095,"facility_records":23,"facility_sequence_contiguous":true,"mcap_crc_validated":true},"formula":"max consecutive header-stamp difference; facility seq[i] == i","supporting_event_ids":[],"confidence_kind":"recorded_value","limitations":["continuity_does_not_prove_nothing_was_omitted_before_recording"],"derived_by":"kinwit-facts/0.1.0"}],"unknowns":["Whether the facility broadcast preceded the robot stop input: the clock uncertainty is larger than the gap.","What opened the facility zone safety input (a person, a test, an equipment fault): the facility source records the input change, not its cause.","Whether any person or object was in the zone: no camera or person-detection source is present.","Whether physical contact occurred: no contact sensor is present, and a speed drop does not imply a collision.","Whether odometry matches the robot's true motion: there is no external ground-truth tracking source.","The true clock relationship outside assumptions A1–A3.","Cause, fault or responsibility. These are not assessed by KINWIT."]},{"id":"questions","title":"Questions for a human reviewer","items":["Was the zone safety input opened by a person, an automated test, or an equipment fault? A separate source (door sensor, camera, operator log) is needed.","Is the declared PLC scan cycle (and therefore the detection latency bound) correct for the real controller?","Is the safety-link path facility → robot I/O the only path that could have produced the robot's stop input?","Would a measured clock reference (PTP / GNSS) be available on site to tighten the alignment interval?"]},{"id":"non_attribution","title":"Non-attribution statement","paragraphs":["This report orders and measures recorded events. It does not determine cause, fault, liability, regulatory compliance or the accuracy of the underlying sensors. Event order is not causation."]}]}