Use after scope-need and relevant specialist skills approve work. Takes the scoped-need document and produces a flat, ordered list of discrete changes required. Each change is scoped to be a single commit.
A scoped need describes what is being delivered. An enumerated change list describes what must move in the repo. This skill is the transformation.
lesser change lists vary in scale: a narrow bug fix might be two commits; a Mastodon-compat-preserving feature addition might be eight; a federation-surface expansion with coordinated sibling-repo work might be larger. The single-commit rule holds regardless of total count.
An approved scoped-need document from scope-need. If the scope touches federation trust, API contract, schema, framework consumption, deploy, or advisor briefs, the relevant specialist skill's findings also apply. Load prior context with memory_recent.
Walk the scoped need against every surface of lesser:
cmd/<lambda>/main.go — Lambda entrypoints. 43 in total; see docs/specs/01-lambda-inventory-matrix.md.pkg/activitypub/ — ActivityPub primitives (activity types, object shapes, JSON-LD context handling).pkg/federation/pkg/services/ — domain services (accounts, notes, lists, follow-graph, moderation, etc.).pkg/storage/ — repository layer and model definitions.pkg/storage/models/*.go — DynamoDB models with TableTheory struct tags. Schema changes land here.pkg/auth/ — authentication (WebAuthn, OAuth 2.0, wallet signature, TOTP).pkg/agents/ — agent governance state and delegation logic.graph/*.graphql — modular GraphQL schema (core.graphql, phase1.graphql, phase2.graphql, phase3.graphql). Regenerate docs/contracts/graphql-schema.graphql after changes.infra/cdk/ — AWS CDK TypeScript stacks + Go pinning exports. Changes here affect every deployment.docs/contracts/openapi.yaml — Mastodon-compat REST contract. Rides with handler changes that affect it.docs/specs/01-lambda-inventory-matrix.md — Lambda inventory. Updates ride with Lambda additions/removals.docs/architecture/dynamodb/gsi_usage_guide.md — GSI access-pattern reference. Updates ride with GSI changes.docs/federation.md / docs/configuration.md / docs/deployment.md — operator documentation.docs/architecture/{auth,dynamodb,cms,moderation}/ — subsystem deep-dives.tests/ — integration tests, system tests, local e2e harness.go.mod / go.sum — dependency changes.AGENTS.md — repository guidelines. Rarely touched; changes are governance-level.README.md — top-level overview. Rides with feature-list changes.CODEOWNERS — ownership. Rarely touched.A change that touches none of these isn't really a change. A change that touches several is fine when they share intent.
docs/contracts/graphql-schema.graphql regeneration in the same commit. Never land schema changes without the generated contract.coordinate-framework-feedback — the change may not belong here.Every enumerated item must answer: is this lesser-mission work (federation, API contract, schema, reliability, AGPL, framework-feedback), or is it scope growth outside the mission?
If any enumerated item is scope growth, stop and revisit scope-need.
Every enumerated item must also answer: does this touch federation trust?
protect-federation-trust findings referenced.Every enumerated item must also answer: does this change observable behavior for Mastodon clients, remote Fediverse peers, sibling repos, or direct API consumers?
preserve-mastodon-api-compat walk must be complete; enumeration references its coordination plan.Every enumerated item must also answer: does this touch PK / SK / GSI / TableTheory tags / optimistic-concurrency versioning?
validate-schema walk must be complete before this item is enumerable. The enumeration references the walk's output and any required rollout coordination.Every enumerated item must also answer: does this consume AppTheory / TableTheory / FaceTheory / greater-components idiomatically, or does it work around them?
coordinate-framework-feedback. The change may not belong in lesser; it may belong in the framework.Each enumerated item fits in one commit:
go build ./... succeeds at the end of the commitgo test ./... passes at the end of the commitgo vet ./... passesgofmt / goimports leave the tree clean./lesser verify --smoke (or equivalent) passes for contract-adjacent changescdk synth succeeds for at least one representative (<app>, <stage>)### N. <imperative title>
- **Paths**: <files or directories touched>
- **Surface**: <cmd / activitypub / federation / services / storage / storage/models / auth / agents / graph / infra/cdk / docs / tests / deps>
- **Classification**: <security / federation-trust / contract-stability / schema / operational-reliability / AGPL / framework-feedback / bug-fix / test-coverage / dependency-maintenance / docs>
- **Federation-trust impact**: <none / preserves / strengthens — refuse if weakens>
- **Contract impact**: <none / backward-compatible / breaking — coordination referenced>
- **Schema impact**: <none / walk complete via validate-schema>
- **Framework consumption**: <idiomatic / reported upstream via coordinate-framework-feedback>
- **Acceptance**: <one sentence: what makes this commit done>
- **Validation**: <`go test ./<package>/...`, `go vet ./...`, `gofmt -l .`, `./lesser verify --smoke`, `cdk synth` for representative stage>
- **Conventional Commit subject**: `<type(scope): subject>` (lowercase present-tense also acceptable: "feat: milestone M2 federation delivery retry")
validate-schema walkpreserve-mastodon-api-compat walkcoordinate-framework-feedback, not patched locallydocs/contracts/graphql-schema.graphql regenerationAppend only if the enumeration surfaces something unusual — a test-coverage gap, a Lambda inventory discipline subtlety, a GraphQL schema regeneration edge case, a TableTheory tag interaction that matters for future changes, a CDK-cross-stack dependency that required care. Routine enumerations aren't memory material. Five meaningful entries beat fifty log-shaped ones.
Invoke plan-roadmap to sequence the flat list into phases and identify the per-stage rollout plan.