Skip to content

feat: surface MISSION mode taxonomy in code, skills, and adopter-facing docs#61

Merged
potiuk merged 5 commits into
apache:mainfrom
andreahlert:feat/modes-taxonomy
May 5, 2026
Merged

feat: surface MISSION mode taxonomy in code, skills, and adopter-facing docs#61
potiuk merged 5 commits into
apache:mainfrom
andreahlert:feat/modes-taxonomy

Conversation

@andreahlert
Copy link
Copy Markdown
Collaborator

Summary

MISSION.md frames the framework around four toggleable modes of agent-assisted repository maintainership (A: triage, B: mentoring, C: agent-authored fixes with human review, D: narrowly-scoped auto-merge). The codebase did not yet reflect that taxonomy. This PR surfaces it in three layers, smallest blast radius first:

  1. docs/modes.md — honest snapshot mapping every shipped skill to a mode (or to outside the modes for the setup family) with a stable / experimental / proposed / off status legend. Mode B is proposed (no skill yet), Mode D is off (deliberately not implemented per MISSION.md § Mode D). Includes a mode lifecycle and explicit cross-references to MISSION, README, and AGENTS.
  2. mode: frontmatter on SKILL.md — every skill that fits a mode gets mode: A or mode: C. Setup-family skills are infrastructure and intentionally omit the field. tools/skill-validator is extended to recognise mode as an optional frontmatter key and validate the value against {A, B, C} (Mode D is excluded because shipping a mode: D skill would be a sequencing violation, not a typo). New unit tests cover both branches.
  3. README + .asf.yaml — the Skill families table gains a Modes column linking to docs/modes.md; the GitHub repo description widens from "security vulnerabilities" to "agent-assisted maintainership", since security is one mode of one family rather than the project's identity.

Why this ordering

The three commits are independently reviewable but ship together because they are mutually load-bearing: the validator change is meaningless without mode: in SKILL.md, the README column is meaningless without docs/modes.md to link to. Splitting them would force readers to context-switch across PRs to evaluate any single piece. They land as one PR with three commits so each layer remains greppable in git log.

Test plan

  • uv run --project tools/skill-validator pytest -k 'not test_real_repo_passes' — 33 passed (the test_real_repo_passes integration test fails on main with 191 pre-existing link-validation violations and is out of scope for this PR)
  • prek run --files <changed-files> clean on every commit
  • skill-validate reports zero new mode-related violations against the real repo
  • Maintainer review of the proposed/off statuses in docs/modes.md — these are MISSION interpretations and should match the PMC's read of the sequencing commitments
  • Maintainer confirmation that the .asf.yaml description rewording is the framing the project wants on its GitHub card

Out of scope

  • Implementing Mode B (a separate, larger workstream — spec PR first, then runtime).
  • Generic Mode C beyond security (lint fixes, audit-tool findings, failing tests, doc holes).
  • Fixing the pre-existing 191 link-validation violations the integration test surfaces.

…ills

MISSION.md frames the framework around Mode A/B/C/D, but the taxonomy
is not surfaced anywhere in the code or adopter docs. Add a maintainer-
facing reference that maps each mode to the skills currently shipping,
with honest status per mode (stable / experimental / proposed / off):

- Mode A (triage) — 10 skills across pr-management and security
- Mode B (mentoring) — proposed, no skill yet
- Mode C (agent-authored fixes with human review) — partial, security-only
- Mode D (narrowly-scoped fix-and-merge) — off per MISSION sequencing

Also documents skills that sit outside the mode taxonomy (the setup
family is framework infrastructure) and the mode lifecycle states
(proposed → experimental → stable → graduated-to-D-eligible) so adopters
and reviewers can map MISSION's commitments to verifiable repo state.

Generated-by: Claude Code (Opus 4.7)
Tag every skill that fits the MISSION mode taxonomy (see docs/modes.md)
with a `mode:` frontmatter field — Mode A for triage skills, Mode C for
agent-authored fix skills. Setup-family skills are infrastructure and
intentionally omit the field.

Extends `skill-validator` to recognise `mode` as an optional frontmatter
key and validate the value against `{A, B, C}`. Mode D is excluded
because MISSION holds it off; a `mode: D` value would be a sequencing
violation rather than a typo.
README skill-families table gains a `Modes` column linking each family
to docs/modes.md (security: A+C, pr-management: A, setup: infra).

Updates the .asf.yaml github.description from "security vulnerabilities"
to the broader "agent-assisted maintainership" framing the MISSION
proposes — security is one mode of one family, not the project's
identity.
@potiuk
Copy link
Copy Markdown
Member

potiuk commented May 5, 2026

Wowowwowo :)

The MISSION proposal lists the four modes but did not point at the
honest snapshot of which modes are actually shipping. Add a one-line
forward reference to docs/modes.md inside § Technical scope so a
reader can move from "what we promise" to "what currently exists"
without leaving the document.
The "Modes at a glance" row for Mode C used `partial (security-only)`,
which is not a value defined in the Status legend. The detailed Mode C
section already states the one shipping skill (security-issue-fix) is
stable while the generic Mode C is proposed; mirror that wording in the
at-a-glance row so the doc uses only legend-defined terms.
@andreahlert andreahlert marked this pull request as ready for review May 5, 2026 20:40
@andreahlert andreahlert requested a review from potiuk May 5, 2026 20:40
@andreahlert
Copy link
Copy Markdown
Collaborator Author

This one took me some time, but I think we're on the right track. Starting the next steps now.

Copy link
Copy Markdown
Member

@potiuk potiuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic !!!! ❤️ it!

@potiuk potiuk merged commit 72e55c2 into apache:main May 5, 2026
10 checks passed
@andreahlert andreahlert added the mode:cross-cutting Spans multiple modes label May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mode:cross-cutting Spans multiple modes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants