Skip to content

red-team: add focus areas 14 and 15 (N=15); skill rewrite lands user-level - #57

Merged
ms609 merged 2 commits into
cpp-searchfrom
claude/red-team-skill-github-4853c6
Aug 5, 2026
Merged

red-team: add focus areas 14 and 15 (N=15); skill rewrite lands user-level#57
ms609 merged 2 commits into
cpp-searchfrom
claude/red-team-skill-github-4853c6

Conversation

@ms609

@ms609 ms609 commented Aug 5, 2026

Copy link
Copy Markdown

Rotation state only. The /red-team skill itself stays user-level at
~/.claude/skills/red-team/ — it is shared across projects, so it is not in this diff.
(An earlier revision of this branch wrongly vendored it, together with a repo-setup guide for
a repo that is already set up; both are reverted here and live with the skill.)

What this branch changes

Areas 14 and 15, from #42's scope-coverage diff — two subsystems owned by no area and
therefore never reviewed at any tier, at any point in the rotation:

Both start at sonnet, UNMEASURED / no inherited maturity. #42 recommended opus for 14
(numerical density) and review-once-then-park for 15; the maintainer chose measured maturity
in both cases — density predicts where bugs hide, it is not evidence that cheap sweeps are
exhausted, and legacy is not the same as clean. Reasoning recorded on #42.

area:14 / area:15 labels created. N recomputed to 15 in log.md's rotation formula,
with a "count the rows, do not trust this number" note — a stale N is what made areas 11–13
unreachable for a month. AGENTS.md's label table updated to area:1area:15, and its entry
now states the area:N convention (which area owns the code, not which round found it).

Not in this diff

#41 is entirely about the user-level skill, so no merge here can close it; the fixes are
applied there and reported on the issue. #42 stays open for its two non-rotation residuals —
the 0-byte R/ImposeConstraint.R + DESCRIPTION:104, and the src/rearrange.cpp
registrations-vs-tags question.

Validation

Documentation and rotation state only — no R or C++ source touched, so no build, no
check_man(), no compile-attrs.R. spell_check_package() does not cover dev/ or
AGENTS.md.

🤖 Generated with Claude Code

… routing and scope gaps

The user-level `/red-team` skill carried dual-mode machinery for a `findings.md`
store this project deleted at the 2026-08-04 migration. Retired to
`~/.claude/skills-retired/red-team/` — the only surviving record of file mode, which
is still correct for a project with no GitHub remote — and replaced with a
project-local skill that assumes issues throughout, alongside `/next-issue`.

The one-off process for standing up a repo under `agent-issues` (fork, default
branch, push block, labels, Actions, secrets, findings migration) moves to a
subsidiary `github-repo-setup.md` that a normal round never opens.

Fixes #41 — the rotation's routing state was tier-only:
- a work-shape gate between brief assembly and dispatch, so a recorded "the next
  visit should NOT be a finder" verdict stops the round and reports instead of
  auto-dispatching. Areas 10 and 13 both carry one, and area 13 is next.
- `needs-escalation` is documented as a tier flag and nothing else; sequencing and
  cross-area residuals stay prose, and step 3 now reads `escalation-backlog.md`
  whether or not the label query hit — a hit used to suppress the row holding the
  actual ask.
- the finder brief carries the area's open issues, so a finder cannot spend its
  budget re-investigating a mechanism already filed.
- `area:N` semantics stated: it marks which area owns the code, not which round
  found it, and the compound label query ANDs correctly.

Addresses #42 — scope coverage:
- the `tidy` pass now leads with a scope-coverage diff (glob `R/*.[Rr]`; the
  lowercase `pp_info_extra_step.r` is invisible to a case-sensitive pattern).
- area 14 (statistics & support metrics, 14 files) and area 15 (legacy pure-R
  search API, 9 files) added, both `sonnet` / UNMEASURED. #42 recommended `opus`
  for 14 and review-once-then-park for 15; the maintainer chose measured maturity
  for both. N is now 15.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ion state only

The previous commit put the skill and its repo-setup guide inside this repo. Both
were wrong. The skill is shared across projects, so burying it here takes
/red-team away from every other project; and `github-repo-setup.md` documents
standing a repo UP under agent-issues, which is precisely the thing already done
here and never needed again — it belongs where a not-yet-configured project reads
it, next to the skill.

Both now live at `~/.claude/skills/red-team/`, with the #41 routing fixes applied
there. This branch keeps only what is genuinely project state: areas 14 and 15,
N = 15, and the README/AGENTS label range.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ms609 ms609 changed the title docs(red-team): move the skill in-repo, GitHub-issues only; close the routing and scope gaps red-team: add focus areas 14 and 15 (N=15); skill rewrite lands user-level Aug 5, 2026
@ms609
ms609 merged commit 53f3dc5 into cpp-search Aug 5, 2026
1 check passed
@ms609
ms609 deleted the claude/red-team-skill-github-4853c6 branch August 5, 2026 10:05
ms609 added a commit that referenced this pull request Aug 5, 2026
#57 landed first and enacted areas 14 and 15 independently of this branch,
which had enacted its own area 14 mid-round. Resolved to #57 throughout: its
scope row, its `start_tier: sonnet` (a deliberate maintainer decision recorded
on #42) and `N = 15`.

Kept from this branch only what #57 could not know:

- `R/PresentContra.R` and `R/ClusterStrings.R` added to row 14 — owned by no
  other row, and both reviewed by the first-ever round.
- The area-14 maturity rationale no longer reads UNMEASURED: the round had
  already run at `opus` and returned 36 findings (4 sev:high). `start_tier`
  stays `sonnet` but is now inert; routing keeps the next visit at `opus`.
- A one-line note on the round entry recording that #57 superseded its row,
  tier and `N`, and that `R/Bootstrap.R` sits in area 15 so A14-36 was filed
  across the boundary.

The four round entries and `last_focus: 14` are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ms609 added a commit that referenced this pull request Aug 5, 2026
Resolving to #57 wholesale also discarded the forward-looking half of the
branch's rationale, which #57 could not have contained — it was written by
the highest-yield round on record. Precedence was the wrong tiebreak; these
are restored on merit:

- The **array-dimension-drop class** — four independent instances found in one
  round (`ConcordanceTable`, `ClusteringConcordance`, `Consistency`,
  `ClusterStrings`, all missing `drop = FALSE`). Recorded as a class to sweep,
  not as four findings to re-discover.
- The **`R/PresentContra.R` reference-tip-mismatch angle** — read but never
  exercised against a forest whose trees have tips absent from the reference.
- The **reachability key question** ("is this reachable from
  `MaximizeParsimony()`'s default output path the way #16/T-400 was, and does
  it return a silently wrong number rather than erroring?"), which produced
  three of the round's four sev:high findings. #57's questions are deeper on
  the numerics but do not ask this.

Header no longer claims UNMEASURED: the area has a measured, heavily-yielding
seam. `start_tier` still reads `sonnet` per the maintainer decision on #42,
but that decision rested on "no measured yield at all", which is now false —
flagged for the maintainer rather than flipped unilaterally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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