Skip to content

Commit a9b6c3b

Browse files
authored
Merge pull request #166 from nikhil1/release/skill-1.3.0
feat(aws-transform): continuous-modernization updates
2 parents 2cfd943 + 4664100 commit a9b6c3b

6 files changed

Lines changed: 82 additions & 8 deletions

aws-transform/POWER.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ displayName: "AWS Transform"
44
description: "Migrate, modernize, and upgrade codebases: .NET Framework to .NET 8/10, mainframe COBOL to Java, VMware VMs to EC2, SQL Server/Oracle/MySQL to Aurora, and Java/Python/Node.js version upgrades or AWS SDK migrations. Assess, plan, and execute code transformations from your IDE."
55
keywords: ["migrate", "modernize", "mainframe", "cobol", "vmware", "dotnet", ".net framework", "windows", "sql server", "oracle", "mysql", "aurora", "ec2 migration", "rehost", "lift-and-shift", "replatform", "legacy", "code upgrade", "sdk migration", "boto3", "java upgrade", "atx", "continuous modernization", "AWS Transform - continuous modernization"]
66
author: "AWS"
7-
version: "2.2.0"
7+
version: "2.3.0"
88
---
99

1010
# AWS Transform Power

aws-transform/steering/workload-continuous-modernization-analysis.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,21 @@ If the user explicitly asks to disable telemetry, omit `--telemetry` for the res
3333
- **EC2** -- follow [continuous-modernization-ec2-execution](workload-continuous-modernization-ec2-execution.md)
3434
- **Batch** -- follow [continuous-modernization-batch-execution](workload-continuous-modernization-batch-execution.md)
3535

36+
## Repository limit per request (max 250)
37+
38+
A single `atx ct analysis run` can be associated with at most **250 repositories**. Before starting an analysis that targets many repos (for example a whole source), check how many repositories are in scope — `atx ct source list` or `atx ct repository list --source <name>` report the per-source count. (Bare `atx ct status` shows workspace-wide totals across all sources, so prefer a scoped form when the analysis targets a single source.)
39+
40+
If the scope exceeds 250 repositories, split it into multiple runs, each targeting at most 250 repos (pass the repos in batches via `--repo <source>::<slug>`), and tell the user you are breaking the work up because of the 250-repo-per-request limit. Never issue a single run associated with more than 250 repositories — it will be rejected. Example: 300 repos → two runs (250 + 50); 600 repos → three runs (250 + 250 + 100).
41+
3642
## Commands
3743

3844
```bash
39-
# Run analysis (returns immediately with analysis ID)
40-
atx ct analysis run --type <tech-debt-quick|tech-debt-comprehensive|security|agentic-readiness|modernization-readiness|custom> --source <name> [--repo <source>::<slug>] --telemetry "agent=<AGENT>,executionMode=local"
41-
42-
# Run and wait for completion
45+
# Run analysis. Pass --wait so the command blocks until the run finishes (preferred — see "Running long analyses" below).
4346
atx ct analysis run --type <tech-debt-quick|tech-debt-comprehensive|security|agentic-readiness|modernization-readiness|custom> --source <name> [--repo <source>::<slug>] --wait --telemetry "agent=<AGENT>,executionMode=local"
4447

48+
# --wait is only in newer CLI versions. If it isn't supported, run the same command without --wait.
49+
atx ct analysis run --type <tech-debt-quick|tech-debt-comprehensive|security|agentic-readiness|modernization-readiness|custom> --source <name> [--repo <source>::<slug>] --telemetry "agent=<AGENT>,executionMode=local"
50+
4551
# Run custom analysis with a specific transformation definition
4652
atx ct analysis run --type custom --transformation-name <TD-name> --source <name> --repo <source>::<slug> --wait --telemetry "agent=<AGENT>,executionMode=local"
4753

@@ -67,6 +73,21 @@ atx ct analysis cancel --id <id>
6773
atx ct analysis delete --id <id> [--cascade-findings]
6874
```
6975

76+
## Running long analyses (--wait, background, logs)
77+
78+
`atx ct analysis run` returns immediately by default with an analysis ID. With `--wait` it blocks until the run completes — and a comprehensive or multi-repo run can take a long time. Prefer `--wait` so the run blocks to completion and you can act on the result in the same step.
79+
80+
**`--wait` is version-gated.** It exists only in newer CLI versions. Before relying on it, confirm the installed CLI supports it — check `atx ct analysis run --help` (or `atx ct --version`). If `--wait` isn't listed, run the command without it; do not invent the flag. If a run fails with an unknown-option error for `--wait`, re-run without it.
81+
82+
**Run long jobs in the background and monitor a log.** A blocking run ties up the session, so start long-running analyses in the background with `&`, redirect output to a log file, and monitor the log:
83+
84+
```bash
85+
atx ct analysis run --type tech-debt-comprehensive --source <name> --wait --telemetry "agent=<AGENT>,executionMode=local" > /tmp/atx-analysis.log 2>&1 &
86+
tail -f /tmp/atx-analysis.log
87+
```
88+
89+
This applies to comprehensive scans, large multi-repo runs, and any analysis the user expects to take a while. Tell the user where the log is and how to check progress.
90+
7091
## Custom Analysis
7192

7293
The `custom` type runs any transformation definition (TD) against a repository. Unlike other analysis types, custom analysis does not generate findings -- it executes the TD directly.
@@ -198,3 +219,7 @@ If an analysis returns 0 findings on a repo that's obviously stale (Java 8, Node
198219
`--category` is a client-side grouping; e.g. `"Tech Debt"` matches both `tech-debt-quick` and `tech-debt-comprehensive`. Use it when the user wants both subtypes together.
199220

200221
`--status` and `--type` accept only the canonical values above. Off-canonical input (e.g. `--status completed`, `--type tech-debt`) returns an `INVALID_INPUT` error.
222+
223+
### Pagination (nextToken)
224+
225+
Depending on the CLI version, `atx ct analysis list` may return only a bounded page rather than every result — don't assume a fixed response shape. After each call, check whether the response carries a `nextToken`; if it's present and non-empty, call the command again with `--next-token <token>` and repeat until no `nextToken` remains. Never treat the first page as the complete set when a `nextToken` is present, or you'll silently miss analyses.

aws-transform/steering/workload-continuous-modernization-findings.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ atx ct findings batch-update --ids <id1,id2,...> --status <open|dismissed> --rea
4949
atx ct findings delete --id <finding-id>
5050
```
5151

52+
## Pagination (nextToken)
53+
54+
Depending on the CLI version, `atx ct findings list` may return only a bounded page rather than every finding — so don't assume a fixed response shape. After each call, check whether the response carries a `nextToken`. If it's present and non-empty, the results are truncated: call the same command again with the same filters plus `--next-token <token>`, and repeat until the response has no `nextToken`. Concatenate the pages before answering. If there's no `nextToken`, you already have the full set.
55+
56+
```bash
57+
# First page
58+
atx ct findings list --status open --json
59+
# ...response includes "nextToken": "<token>" → fetch the next page
60+
atx ct findings list --status open --json --next-token <token>
61+
# ...repeat until the response has no nextToken
62+
```
63+
64+
Never present the first page as the complete set when a `nextToken` is present — that silently drops findings and undercounts severity totals.
65+
5266
## Status set
5367

5468
`open`, `dismissed`, `obsolete`. Transitions a user can drive: `open ↔ dismissed`. `obsolete` is a terminal state set by the system when a re-analysis no longer produces the finding — users do not transition into or out of it.
@@ -75,6 +89,7 @@ Filtering at the CLI is materially faster than pulling everything and filtering
7589
- "Auto-fixable" without a transform name → narrow with `--type tech-debt-quick` first. `tech-debt-quick` findings carry an ATX-transform fix; `security` findings carry a security-agent fix (see the [remediation](workload-continuous-modernization-remediation.md) skill). Findings without a `fix` field may still be remediable — see the [remediation](workload-continuous-modernization-remediation.md) skill's decision tree.
7690
- `--type` alone or `--type --severity`/`--type --min-severity` (no status, no repo) → add `--status open` to anchor on the live-triage shape.
7791
- Passing both `--severity` and `--min-severity` in the same call → the CLI rejects this. Pick one.
92+
- Treating the first page of `atx ct findings list` as the complete set when the response carries a non-empty `nextToken`. Page through with `--next-token <token>` until no `nextToken` remains — otherwise you silently drop findings.
7893

7994
### Multi-repo, multi-type questions
8095

aws-transform/steering/workload-continuous-modernization-remediation.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ Format: `--telemetry "agent=<agent>,executionMode=<mode>"`
2727
If the user explicitly asks to disable telemetry, omit `--telemetry` for the rest of the session.
2828

2929
```bash
30-
# Create from finding IDs (uses each finding's fix.transform_name)
31-
atx ct remediation create --ids <id1,id2> --name "Fix name" --telemetry "agent=<AGENT>,executionMode=local"
30+
# Create from finding IDs (uses each finding's fix.transform_name).
31+
# Pass --wait so the command blocks until the remediation finishes (version-gated — see "Running long remediations" below).
32+
atx ct remediation create --ids <id1,id2> --name "Fix name" --wait --telemetry "agent=<AGENT>,executionMode=local"
3233

3334
# Create from finding IDs with a custom TD override (ignores finding's fix field)
3435
atx ct remediation create --ids <id1,id2> --transformation-name <TD-name> --telemetry "agent=<AGENT>,executionMode=local"
@@ -55,6 +56,31 @@ atx ct remediation retry --id <id>
5556
atx ct remediation delete --id <id>
5657
```
5758

59+
## Repository limit per request (max 250)
60+
61+
A single `atx ct remediation create` can be associated with at most **250 repositories**. Before creating a remediation that spans many repos, check how many distinct repositories the target findings cover.
62+
63+
If the remediation would span more than 250 repositories, split it into multiple `remediation create` requests, each covering findings from at most 250 repos, and tell the user you are breaking it up because of the 250-repo-per-request limit. Never create a single remediation associated with more than 250 repositories — it will be rejected. Example: findings across 300 repos → two remediations (one for 250 repos, one for the remaining 50).
64+
65+
## Running long remediations (--wait, background, logs)
66+
67+
`atx ct remediation create` returns immediately by default with a remediation ID. With `--wait` it blocks until the remediation completes — and applying transforms across repos can take a long time. Prefer `--wait` so you can act on the result in the same step.
68+
69+
**`--wait` is version-gated** — it exists only in newer CLI versions. Confirm support via `atx ct remediation create --help` (or `atx ct --version`) before relying on it; if it isn't listed, run without `--wait` and do not invent the flag. If a run fails with an unknown-option error for `--wait`, re-run without it.
70+
71+
**Run long jobs in the background and monitor a log.** Start long-running remediations with `&`, redirect output to a log file, and monitor it:
72+
73+
```bash
74+
atx ct remediation create --ids <id1,id2> --name "Fix name" --wait --telemetry "agent=<AGENT>,executionMode=local" > /tmp/atx-remediation.log 2>&1 &
75+
tail -f /tmp/atx-remediation.log
76+
```
77+
78+
Tell the user where the log is and how to check progress.
79+
80+
## Listing remediations (pagination)
81+
82+
Depending on the CLI version, `atx ct remediation list` may return only a bounded page — don't assume a fixed response shape. After each call, if the response carries a non-empty `nextToken`, call the command again with `--next-token <token>` and repeat until no `nextToken` remains. Don't treat the first page as complete when a `nextToken` is present.
83+
5884
## Security Remediation
5985

6086
Security findings (from `atx ct analysis run --type security`) are auto-remediable with the **same** `remediation create` command as any other finding — no `--transformation-name` is needed. Security findings carry a `security-agent` fix, which routes to the AWS Security Agent code-remediation API instead of an ATX transform; the fix is generated server-side.

aws-transform/steering/workload-continuous-modernization-reporting.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,13 @@ atx ct findings list --json
2626
atx ct remediation list --json
2727
```
2828

29+
### Paginate every list to completion (nextToken)
30+
31+
Response shape can vary by CLI version, so don't hard-code it: a list command may return every result at once, a bare array, or an object that wraps the array alongside a top-level `nextToken`. The report is a **static snapshot baked from this data**, so a dropped page silently loses sources, repos, analyses, findings, or remediations. The version-agnostic rule: after each list call, check whether the response carries a non-empty `nextToken`; if it does, call the command again with `--next-token <token>` and repeat until no `nextToken` remains, then concatenate all pages before normalizing. If there is no `nextToken`, the single response is already complete. A truncated `findings` or `remediation` fetch skews every KPI and chart downstream.
32+
2933
### Raw response shapes
3034

31-
The five commands do NOT return the same envelope. Read each carefully `repository list` wraps results in `{"items": [...]}`; the other four return a flat array. All field names are snake_case.
35+
The five commands do NOT return the same envelope, and the exact container can vary by CLI version `repository list` wraps results in `{"items": [...]}`, while the others may come back as a bare array or (on newer CLIs) an object wrapping the array alongside a `nextToken` (see the pagination note above). Read the records wherever they live and follow `nextToken` when it's present. The shapes below describe the objects **inside** each list. All field names are snake_case.
3236

3337
**`source list --json`** → flat array:
3438
```jsonc

aws-transform/steering/workload-continuous-modernization-source.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ atx ct repository update --source <source> --labels "migration:v2"
118118
atx ct repository delete --repo "<source>::<slug>" --source <source>
119119
```
120120

121+
## Pagination (nextToken)
122+
123+
Depending on the CLI version, `atx ct source list` and `atx ct repository list` may return only a bounded page — don't assume a fixed response shape. After each call, if the response carries a non-empty `nextToken`, call the command again with `--next-token <token>` (keeping any `--source`/`--labels` filters) and repeat until no `nextToken` remains. Don't treat the first page as the complete set — otherwise sources or repos silently go missing from listings and downstream scoping.
124+
121125
## Labels
122126

123127
Labels are user-defined identifiers for organizing and filtering groups of repositories.

0 commit comments

Comments
 (0)