canvas-humanizer-surgicallisted
Install: claude install-skill X-isdoingreat/canvas-pilot
# canvas-humanizer-surgical
Apply a targeted second pass. Do not reopen the whole draft when only a small
set of segments is damaged.
## Inputs and boundaries
Require:
- `draft_path`, `output_path`, and prior `humanizer_log.json`;
- `course_id`, `assignment_id`, and stable assignment `work_dir`;
- voice register and relevant spec/rubric/source anchors;
- explicit issue list or an audit artifact identifying target segments;
- optional hard locks and banned-phrase list.
Require `work_dir` to end in
`course-<course_id>__assignment-<assignment_id>`. Keep a source copy and write
`surgical_log.json` beside the new output.
Validate the path against `src.course_artifacts.stable_work_dir` before writing.
This is local file transformation only. Never call Canvas, mutate an external
platform, write assignment `result.json`, or claim the assignment is ready.
Use the canonical sentence utilities from `src.humanizer_segmentation`, lock
logic from `src.humanizer_segment_extract.extract_locks`, and deterministic
scoring from `src.humanizer_score`.
## Stage 1: audit and role tagging
Map every target to `(doc_paragraph_index, intra_para_index)` and verify its
exact current text. Reject stale issue records whose anchor no longer matches.
Classify target roles conservatively:
- `intro_opener`, `intro_thesis`, `intro_setup`;
- `body_topic_sentence`, `body_quote_lead_in`, `body_quote_follow_up`;
- `body_elaboration`, `body_anecdote`, `body_closing`;
- `conclusion_thesis_restate`, `concl