| name | debugging-cycle-author |
| description | Run a multi-vector debugging pass when the coverage-gate trips (tests_failed > 0 OR files_below_90pct non-empty OR ecm_rows_uncovered non-empty). For each failed iteration: (1) classify the failure vector — state / network / memory / logic / flake; (2) state the targeted hypothesis + exact file:line change; (3) re-run the test suite; (4) emit one `debug-trace@1` attempt-row per cycle. Trips the workflow circuit breaker after 5 consecutive failures. Used by chief-technology-officer/ship-tasks as step 15, conditional on `coverage_report.tests_failed > 0`. Use when user asks to "draft a debugging cycle" or "create the debugging cycle". Do NOT use for "audit existing debugging cycle" (use debugging-cycle-audit instead). |
| license | Apache-2.0 |
| metadata | {"version":"1.0.0","module":"skill","stage":"e","cyberos-template":"debug-trace@1","cyberos-rubric-target":"debugging_cycle_rubric@1.0"} |
| allowed_memory_scopes | {"read":["project:*","module:*"],"write":["project:task/{task_id}/debug-trace"]} |
| audit | {"row_kind":"debug_cycle_authored","required_fields":["task_id","attempts","failure_vectors_seen","consecutive_failures","circuit_breaker_tripped"]} |
| inputs | [{"name":"task","format":"task@1","required":true},{"name":"coverage_report","format":"coverage-gate@1","required":true}] |
| outputs | [{"name":"debug_trace","format":"debug-trace@1"}] |
| triggers | ["workflow `chief-technology-officer/ship-tasks` step 15 when coverage_report.tests_failed > 0"] |
| blockers | ["test framework itself is broken (no test process can start) — diagnose tooling before this skill runs","circuit breaker already tripped on this task this session — escalate, do not retry"] |
| untrusted_inputs | {"wrap_in_marker":"untrusted_content","injection_scan":"required","on_marker_hit":"surface_to_human"} |
debugging-cycle-author
1. Purpose
Replace the unbounded "try things until it works" loop with a bounded, auditable five-attempt budget. Each attempt is classified, hypothesised, and tested; the outer workflow uses the attempt count to trip the circuit breaker.
2. Output schema
task_id: task-<MODULE>-<NNN>
generated_at: <ISO-8601>
trigger: "tests_failed > 0 | files_below_90pct | ecm_rows_uncovered"
budget_max_attempts: 5
attempts:
- id: ATTEMPT-001
started_at: <ISO-8601>
failure_vector: state | network | memory | logic | flake | env
hypothesis: "<one-paragraph hypothesis tying observed failure to a root cause>"
change:
file: "<absolute>"
lines: "<L1-L2 | new>"
diff_summary: "<one-liner>"
rerun_result:
tests_failed: <int>
files_below_90pct: <int>
ecm_rows_uncovered: <int>
outcome: passed | partial |