Debugging is the systematic process of identifying defects in a human-made artifact, isolating their cause, and applying a correction. It operates as a method of inquiry: the practitioner hypothesizes about the gap between observed behavior and expected behavior, designs tests to narrow the space of possible causes, and verifies that the correction restores intended function. Debugging persists through documented procedures (debuggers, trace logs, bug trackers), taught methods (binary search, rubber-ducking, bisect), and institutional memory (post-mortems, regression suites). Its parameters are: (1) there must be a designed specification to deviate from, (2) the artifact must be inspectable — its state accessible to observation, (3) the process must be repeatable so the fix does not reintroduce the defect. Without a spec, there is nothing to debug; without inspectability, there is only blind trial; without repeatability, the defect is a ghost that returns.
[formal: debuggatio | substrate: behavior | horizon: hours | explicit: yes | epoch: 0.49]