The pipeline loops indefinitely from the UpdatePipeline stage to the Source stage due to an unstable action name of the source action.
The source action name contains an (unresolved?) token string of the form __Token_TOKEN.XXX__. Since the token number (XXX) changes during each synth step, the pipeline updates itself indefinitely when selfMutation is true (default behavior).
It is not possible to use a custom action name for the source action (AFAIK).

Reproduction Steps
const input = CodePipelineSource.codeCommit(repo, 'master');
const synth = new CodeBuildStep('Synth', { input /* ... */ });
const pipeline = new CodePipeline(this, 'Pipeline', {
synth,
crossAccountKeys: true,
});
What did you expect to happen?
The source action name is stable (does not change between successive synths) and the pipeline does not loop indefinitely.
What actually happened?
The source action name is unstable (changes between successive synths) and the pipeline loops indefinitely.
Environment
- CDK CLI Version : 1.114.0 (build 7e41b6b)
- Framework Version: 1.114.0
- Node.js Version: v14.17.1
- OS : macOS 11.4
- Language (Version): TypeScript (4.3.5)
This is 🐛 Bug Report
The pipeline loops indefinitely from the
UpdatePipelinestage to theSourcestage due to an unstable action name of the source action.The source action name contains an (unresolved?) token string of the form
__Token_TOKEN.XXX__. Since the token number (XXX) changes during each synth step, the pipeline updates itself indefinitely whenselfMutationistrue(default behavior).It is not possible to use a custom action name for the source action (AFAIK).
Reproduction Steps
What did you expect to happen?
The source action name is stable (does not change between successive synths) and the pipeline does not loop indefinitely.
What actually happened?
The source action name is unstable (changes between successive synths) and the pipeline loops indefinitely.
Environment
This is 🐛 Bug Report