Skip to content

Rewrite retrospective routing and destination taxonomy#283

Merged
ikuwow merged 3 commits into
mainfrom
retrospective-routing
Jul 10, 2026
Merged

Rewrite retrospective routing and destination taxonomy#283
ikuwow merged 3 commits into
mainfrom
retrospective-routing

Conversation

@ikuwow

@ikuwow ikuwow commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

The retrospective skill used to auto-file every global-scope finding as a ikuwow/dotfiles issue with no user gate, while project-scope findings had a 3-choice AskUserQuestion (apply now / create issue / drop) that only covered rule edits. This PR gates every finding — global included — through per-finding AskUserQuestion (no silent writes) and expands the action set to match analysis.md's countermeasure taxonomy (mechanize, new-rule, new-skill in addition to rule and skill edits), so a finding can materialize as more than a rule tweak.

Why the shape it took

Per-scope action asymmetry: global findings drop apply now. The weekly-improvement routine already consumes global issues, and letting an arbitrary project session edit dotfiles-managed files would bypass the dotfiles branch/PR workflow. Project-scope findings keep apply now, but only on a non-default branch and without auto-commit, so the writes surface in the current working tree for the user to reconcile with the branch's intended diff.

Issue batching: approved findings are grouped by scope into one session-level issue each, matching the current title format (Retrospective: <date> …) and keeping the weekly-routine consumption model intact.

Prompt fatigue: AskUserQuestion caps at 4 questions per call (the tool schema's questions.maxItems field, surfaced by ToolSearch select:AskUserQuestion). At ≥5 findings, low-severity ones auto-skip and the rest are batched across multiple ≤4-question calls, so a user who has already left the session isn't hit with N sequential prompts.

Verification

Static:

  • pre-commit run --files claude/skills/retrospective/SKILL.md claude/skills/retrospective/analysis.md → all applicable hooks Passed; JSON/YAML/line-count budget hooks Skipped as N/A
  • git grep -n 'Global-scope findings\|Project-scope findings' claude/skills/retrospective/ → no output (removed sections have no lingering references)
  • AskUserQuestion schema still has questions: { minItems: 1, maxItems: 4 } and each question's options still minItems: 2, maxItems: 4 — the 4-choice-per-finding fits comfortably

End-to-end:

  • Ran /retrospective from a separate Claude Code session against this branch before merge — the skill walked Step 0 → Step 1 (Fable subagent analysis, ~6 min) → Step 2 (per-finding AskUserQuestion routing) to completion without error. Symlinked skill mutation and real-issue side effects were accepted for that run because the alternative (reviewing without executing the flow) would leave the routing rewrite unexercised

Follow-up

#284 restructures the flow so the main session produces first-pass findings and Fable reviews them, instead of Fable re-reading the whole transcript. Taxonomy and routing established here are its prerequisites.

ikuwow and others added 3 commits July 10, 2026 19:34
Replace the asymmetric global-auto-issue / project-AskUserQuestion
routing with per-finding AskUserQuestion for both scopes, and replace
the 4-step countermeasure priority list with a 5-destination taxonomy
(existing-rule-edit, existing-skill-update, mechanize, new-rule,
new-skill) tagged explicitly on each finding. Preserve the sanitize
rule for global issues (now stated up front in Step 2) and add a
prompt-fatigue split for sessions with many findings.

Co-authored-by: Claude <Opus 4.7 (1M context)> <[email protected]>
Resolve gaps flagged by an outside review of the routing rewrite: the
apply-now branch context was unspecified (session end could be on the
default branch or an unrelated feature branch), and the create-issue
granularity was ambiguous between per-finding and per-session issues.
Add a branch gate that refuses apply-now on the default branch and
leaves feature-branch writes uncommitted, batch approved findings by
scope into one session-level issue each, and note that the dotfiles
cwd edge case still uses Other rather than lifting the global
apply-now ban.

Co-authored-by: Claude <Opus 4.7 (1M context)> <[email protected]>
Code review flagged three issues. The branch-gate detection compared
`git symbolic-ref refs/remotes/origin/HEAD` (which returns
`refs/remotes/origin/main`) to `git rev-parse --abbrev-ref HEAD`
(which returns `main`), so the two strings never matched and the
gate silently failed open. Normalize both to short branch names and
show the shell one-liner explicitly. Also split the "Global finding"
multi-clause bullet into parent + rationale/exception children per
the bullet-per-sentence rule, and restructure the `skip` / `Other`
outcome lines as prose so they no longer sit as trailing bullets
under the `create issue` list.

Co-authored-by: Claude <Opus 4.7 (1M context)> <[email protected]>
@ikuwow ikuwow marked this pull request as ready for review July 10, 2026 11:26
@ikuwow ikuwow merged commit 3f8e907 into main Jul 10, 2026
6 checks passed
@ikuwow ikuwow deleted the retrospective-routing branch July 10, 2026 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant