Skip to content

feat(aws-transform): add .NET bulk / multi-repo modernization steering - #265

Merged
krokoko merged 3 commits into
awslabs:mainfrom
pranav-firake:aws-transform-dotnet-bulk-steering
Sep 4, 2026
Merged

feat(aws-transform): add .NET bulk / multi-repo modernization steering#265
krokoko merged 3 commits into
awslabs:mainfrom
pranav-firake:aws-transform-dotnet-bulk-steering

Conversation

@pranav-firake

Copy link
Copy Markdown
Contributor

Summary

Routes portfolio / multi-repo .NET requests to the bulk orchestrator (dotnet-bulk-modernization-agent) instead of the single-job flow.

The existing references/dotnet.md only describes the single-job dotnet-chatty-agent flow: one uploaded solution, local diff-apply, no separate assessment phase. The bulk orchestrator is a materially different model, and the skill had no steering for it:

Single-job (existing)Bulk / portfolio (new)
Orchestratordotnet-chatty-agentdotnet-bulk-modernization-agent
Inputone uploaded source.zipconnector-based multi-repo discovery (CodeConnections / S3)
Phasesone job (assessment + transform)distinct assessment → plan → transform
Review panelsnonediscovered-repo selector, assessment summary, cross-repo selector, uber transformation plan, missing packages
Executionlocal diff-applyper-repo transform waves, web-delivered artifacts

Because both agents surface in chat as ".NET modernization agent", a portfolio request could be routed to the single-job flow, which cannot handle a fleet.

Changes

  • New plugins/aws-transform/skills/aws-transform/references/dotnet-bulk.md — documents the portfolio flow. The orchestrator is discovered via list_resources (never hardcoded) and disambiguated on name = dotnet-bulk-modernization-agent only — not on jobOrchestrator / chatUILabel, which are not reliable selectors. HITL payloads defer to the runtime _outputSchema / _responseHint per tools.md; auth defers to auth.md.
  • plugins/aws-transform/skills/aws-transform/references/workflow.md — routing now splits .NET by scope: a single local solution → dotnet.md; multi-repo / portfolio → dotnet-bulk.md.

Notable correctness details

  • jobName uses "DotNet Bulk Modernization", not ".NET Bulk Modernization" — a leading . fails CreateJob's ^[\p{L}\p{N}]+(?:[-_\. ]+[\p{L}\p{N}]+)*$ pattern and raises ValidationException at runtime.
  • The objective's interactive_mode MUST stay "auto" in the bulk flow. There it controls the per-repo sub-agent, which has no reviewer and idles out — writing "interactive" wedges the repo and the whole wave. An interactive selection is realized via the orchestrator mode gate instead.
  • A declined connector approval lands in REJECTED with no path back to PENDING; create a fresh connector and delete the rejected one to free the workspace connector quota, rather than polling.
  • connectorType: the Connector Control Plane enum is CODE_CONNECTION / S3, while the tool may expect a qualified connector id that it maps to that enum — read the tool schema rather than assuming either form.

Provenance

Mirrors the merged internal change (ATXKiroPower CR-300479961) into the public portable-plugin distribution, so plugin users get the same routing as the internal Power. Internal-only files (marketplace.json, test-prompts.json) are not included, and the .claude-plugin / .codex-plugin manifests are intentionally left untouched — upstream owns those (own version, keywords, author, interface), and the internal manifests carry an internal-only source_power_commit provenance field that has no meaning here.

Testing

  • dprint check (0.51, repo dprint.json) — clean.
  • markdownlint-cli2 (0.17, repo .markdownlint-cli2.yaml) — 0 errors.
  • tools/validate-cross-refs.cjs — 0 errors.
  • tools/validate-references.py — 0 broken links; dotnet-bulk.md is reachable from SKILL.md (not orphaned).
  • tools/validate-size.py — 0 over the error threshold.
  • ajv manifest validation — all manifests valid (unchanged).

Remaining warnings (SKILL.md at ~400 lines, AWSTransformInfrastructureExecutorAccessEC2.json orphan) are pre-existing on main and untouched by this PR.


By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.

The existing dotnet.md reference only describes the single-job
dotnet-chatty-agent flow (one uploaded solution, local diff-apply, no
separate assessment phase). The bulk orchestrator is a materially
different model -- connector-based multi-repo discovery, distinct
assessment -> plan -> transform phases with review panels, per-repo
transform waves, and web-delivered artifacts -- and had no steering.
Because both agents surface in chat as ".NET modernization agent", a
portfolio request could be routed to the single-job flow, which cannot
handle a fleet.
- New references/dotnet-bulk.md documents the portfolio flow. The
orchestrator is discovered via list_resources (never hardcoded) and
disambiguated on name=dotnet-bulk-modernization-agent; HITL payloads
defer to the runtime _outputSchema/_responseHint per tools.md; auth
defers to auth.md.
- references/workflow.md routing now splits .NET by scope: a single
local solution -> dotnet.md; multi-repo / portfolio -> dotnet-bulk.md.

@krokokokrokoko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

please update the version of the plugins where required

New .NET bulk / multi-repo modernization steering is a backwards-compatible
feature addition, so it takes a minor bump — matching the convention used for
prior reference-file additions (1.1.0, 1.3.0, 1.7.0).
- plugins/aws-transform/.claude-plugin/plugin.json: 1.7.0 → 1.8.0
- .claude-plugin/marketplace.json (aws-transform entry): 1.7.0 → 1.8.0
- plugins/aws-transform/.codex-plugin/plugin.json: regenerated → 1.8.0
The Codex marketplace entry carries no version field, so it needs no change.
@krokoko
krokoko enabled auto-merge September 4, 2026 18:30
carolabadeer added a commit to carolabadeer/agent-plugins that referenced this pull request Sep 4, 2026
…atx CLI
Syncs the continuous-modernization reference docs from the internal source
of truth (ATXKiroPower mainline 36aa5d8) to match the shipped atx CLI.
- Analysis type `tech-debt-quick` renamed to `rapid-techdebt-analysis`.
- Replace the removed `atx ct discovery status` with `atx ct repository list`.
- Fix `atx ct analysis run --sources` to the correct `--source`.
Docs-only; no manifest or version changes. The .NET bulk steering from the
same internal range is intentionally excluded -- it is already covered by
awslabs#265, which also carries the 1.8.0 version bump.
Internal source: ATXKiroPower mainline 36aa5d8
@krokoko
krokoko added this pull request to the merge queueSep 4, 2026
@krokoko
krokoko removed this pull request from the merge queue due to a manual request Sep 4, 2026
carolabadeer added a commit to carolabadeer/agent-plugins that referenced this pull request Sep 4, 2026
…atx CLI
Syncs the continuous-modernization reference docs from the internal source
of truth (ATXKiroPower mainline 36aa5d8) to match the shipped atx CLI, and
bumps the plugin to 1.8.1.
- Analysis type `tech-debt-quick` renamed to `rapid-techdebt-analysis`.
- Replace the removed `atx ct discovery status` with `atx ct repository list`.
- Fix `atx ct analysis run --sources` to the correct `--source`.
The .NET bulk steering from the same internal range is intentionally
excluded -- it is already covered by awslabs#265, which bumps to 1.8.0. This
change stacks a patch bump on top of that, so awslabs#265 must merge first.
Internal source: ATXKiroPower mainline 36aa5d8
@krokoko
krokoko added this pull request to the merge queueSep 4, 2026
carolabadeer added a commit to carolabadeer/agent-plugins that referenced this pull request Sep 4, 2026
…atx CLI
Syncs the continuous-modernization reference docs from the internal source
of truth (ATXKiroPower mainline 36aa5d8) to match the shipped atx CLI, and
bumps the plugin to 1.9.0.
- Analysis type `tech-debt-quick` renamed to `rapid-techdebt-analysis`.
- Replace the removed `atx ct discovery status` with `atx ct repository list`.
- Fix `atx ct analysis run --sources` to the correct `--source`.
The .NET bulk steering from the same internal range is intentionally
excluded -- it is already covered by awslabs#265, which bumps to 1.8.0. This
change bumps on top of that, so awslabs#265 must merge first.
Internal source: ATXKiroPower mainline 36aa5d8
Merged via the queue into awslabs:main with commit c0d4528Sep 4, 2026
24 checks passed
carolabadeer added a commit to carolabadeer/agent-plugins that referenced this pull request Sep 4, 2026
…atx CLI
Syncs the continuous-modernization reference docs from the internal source
of truth (ATXKiroPower mainline 36aa5d8) to match the shipped atx CLI, and
bumps the plugin to 1.9.0.
- Analysis type `tech-debt-quick` renamed to `rapid-techdebt-analysis`.
- Replace the removed `atx ct discovery status` with `atx ct repository list`.
- Fix `atx ct analysis run --sources` to the correct `--source`.
The .NET bulk steering from the same internal range is intentionally
excluded -- it is already covered by awslabs#265, which bumps to 1.8.0. This
change bumps on top of that, so awslabs#265 must merge first.
Internal source: ATXKiroPower mainline 36aa5d8
github-merge-queueBot pushed a commit that referenced this pull request Sep 4, 2026
…atx CLI (#270)
Syncs the continuous-modernization reference docs from the internal source
of truth (ATXKiroPower mainline 36aa5d8) to match the shipped atx CLI, and
bumps the plugin to 1.9.0.
- Analysis type `tech-debt-quick` renamed to `rapid-techdebt-analysis`.
- Replace the removed `atx ct discovery status` with `atx ct repository list`.
- Fix `atx ct analysis run --sources` to the correct `--source`.
The .NET bulk steering from the same internal range is intentionally
excluded -- it is already covered by #265, which bumps to 1.8.0. This
change bumps on top of that, so #265 must merge first.
Internal source: ATXKiroPower mainline 36aa5d8
Sign up for freeto 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.

3 participants

@pranav-firake@krokoko@youtuyy