{"schema":"kinwit.report.v1","case_id":"SIM-2026-0004","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-0004 (scenario s01-no-facility). Window: 14000.032 ms of robot recording on the ROBOT_ROS_TIME clock.","Sources: 9 robot topics (kinesim/0.1.0) and no facility 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.953,"mid":200.003,"hi":200.053},"source_id":"robot-controller-sim","label":"Navigation goal executing","basis":"status publish time ± robot timestamp jitter"},{"event_id":"E-003","t_ms":{"lo":11014.95,"mid":11017.5,"hi":11020.05},"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-004","t_ms":{"lo":11020.05,"mid":11020.1,"hi":11020.15},"source_id":"robot-controller-sim","label":"Robot safety controller starts Category-1 controlled stop","basis":"header stamp ± robot timestamp jitter"},{"event_id":"E-005","t_ms":{"lo":11049.945,"mid":11049.995,"hi":11050.045},"source_id":"robot-controller-sim","label":"Navigation goal aborted","basis":"status publish time ± robot timestamp jitter"},{"event_id":"E-006","t_ms":{"lo":11050,"mid":11050,"hi":11050},"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-007","t_ms":{"lo":11919.926,"mid":11929.973,"hi":11940.019},"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-008","t_ms":{"lo":12139.95,"mid":12140,"hi":12140.05},"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 Robot safety I/O registers external stop input → E-006 Zero velocity command recorded on /cmd_vel → E-007 Odometry reports speed < 0.01 m/s held ≥ 200 ms. Each step is ordered within its stated uncertainty.","variables":{"E-003→E-006":"BEFORE","E-006→E-007":"BEFORE"},"formula":"pairwise interval relations along the chain","supporting_event_ids":["E-003","E-006","E-007"],"confidence_kind":"bounded_interval_under_assumptions","limitations":["event_order_is_not_causation","both_sources_are_synthetic"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-002","category":"derived_measurement","title":"Reported speed at stop input","statement":"Wheel odometry reports 1.196 m/s when the stop input is registered (E-003), interpolated between /odom samples #550 (1.202 m/s) and #551 (1.196 m/s).","variables":{"speed_mps":1.196,"before_sample_mps":1.202,"after_sample_mps":1.196,"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-003"],"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-003","category":"derived_measurement","title":"Stop input to zero velocity command","statement":"The first zero velocity command (E-006) is recorded 30 ms after the stop input (E-003), same robot clock.","variables":{"latency_ms":30,"robot_jitter_bound_ms":0.05},"formula":"ZC.publish_time − SI.header.stamp (single clock domain; ± one jitter bound)","supporting_event_ids":["E-003","E-006"],"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-004","category":"derived_measurement","title":"Stop input to reported stationary","statement":"Odometry reports the robot stationary (E-007) 899.876 to 925.069 ms after the stop input (E-003). Reported travel in that window: 0.561 m; mean reported deceleration 1.3 m/s².","variables":{"delta_lo_ms":899.876,"delta_hi_ms":925.069,"reported_distance_m":0.561,"mean_decel_mps2":1.3,"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-003","E-007"],"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-005","category":"derived_measurement","title":"Nearest lidar return when stationary","statement":"The /scan message nearest the reported stop (#119) has its closest return at 3.675 m, bearing -135° (robot frame).","variables":{"min_range_m":3.675,"bearing_deg":-135,"scan_index":119,"scan_byte_start":1107637},"formula":"argmin over LaserScan.ranges; bearing = angle_min + i·angle_increment","supporting_event_ids":["E-007"],"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-006","category":"context","title":"Robot position relative to the facility zone","statement":"At the stop input the odometry pose is (9.243, 5.291) m, 1.957 m outside the mapped boundary of ZONE-B2.","variables":{"odom_x_m":9.243,"odom_y_m":5.291,"zone_id":"ZONE-B2","distance_to_zone_m":1.957,"inside_zone":false},"formula":"Euclidean distance from /odom position to the zone rectangle in the recorded map attachment","supporting_event_ids":["E-003"],"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-007","category":"clock","title":"Clock offset uncalibrated","statement":"No facility source is present, so no clock relationship can be derived. Cross-source ordering is not reported.","variables":{"status":"UNCALIBRATED"},"formula":"n/a","supporting_event_ids":[],"confidence_kind":"absence_of_signal","limitations":["no_cross_source_ordering"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-010","category":"observed_sequence","title":"Navigation goal outcome","statement":"The navigation goal is recorded as ABORTED (E-005); drive power removal is reported at E-008.","variables":{"goal_status":"ABORTED"},"formula":"action_msgs/GoalStatus.status == 6","supporting_event_ids":["E-005","E-008"],"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-008","category":"coverage","title":"Source coverage and evidence gaps","statement":"1 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":1,"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"],"confidence_kind":"absence_of_signal","limitations":["coverage_is_not_completeness"],"derived_by":"kinwit-facts/0.1.0"},{"finding_id":"F-009","category":"integrity","title":"Record continuity","statement":"/odom: 701 messages, largest gap 20.095 ms (nominal 20 ms).","variables":{"odom_messages":701,"odom_max_gap_ms":20.095,"facility_records":0,"facility_sequence_contiguous":null,"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":["Anything the facility controller recorded: that source is missing from this package.","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."]}]}