@codedrifters/configulator 0.0.443 → 0.0.444

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.mts CHANGED
@@ -12599,11 +12599,12 @@ interface DeployWorkflowOptions {
12599
12599
  * account, so anything they share outside their own stacks — a parent hosted
12600
12600
  * zone, an account-level singleton — has to tolerate concurrent mutation.
12601
12601
  *
12602
- * Applies to the deploy job only. The `plan-apply` gate's apply job keeps the
12603
- * unsuffixed group: an apply is dispatched from whatever ref the operator
12604
- * happens to be on, which says nothing about the branch that was planned, so
12605
- * a branch key there would weaken the mutual exclusion rather than sharpen
12606
- * it.
12602
+ * Applies to the deploy job and when diff capture is on — to each target's
12603
+ * diff job, which locks the same branch's stacks for the same reason. The
12604
+ * `plan-apply` gate's apply job keeps the unsuffixed group: an apply is
12605
+ * dispatched from whatever ref the operator happens to be on, which says
12606
+ * nothing about the branch that was planned, so a branch key there would
12607
+ * weaken the mutual exclusion rather than sharpen it.
12607
12608
  *
12608
12609
  * @see `docs/packages/@codedrifters/configulator/workflows/aws-deploy-workflow.md`
12609
12610
  * @default false - the group is the deployment target alone
@@ -12737,7 +12738,7 @@ declare class AwsDeployWorkflow extends Component {
12737
12738
  */
12738
12739
  readonly diffOptions: Required<DeployDiffOptions>;
12739
12740
  /**
12740
- * Whether each deploy job's concurrency group carries the branch.
12741
+ * Whether each deploy and diff job's concurrency group carries the branch.
12741
12742
  */
12742
12743
  readonly branchScopedConcurrency: boolean;
12743
12744
  /**
@@ -12803,6 +12804,23 @@ declare class AwsDeployWorkflow extends Component {
12803
12804
  * jobs for one target sort next to each other in the run view.
12804
12805
  */
12805
12806
  private buildDiffJobName;
12807
+ /**
12808
+ * Build a diff job's `concurrency` setting from its job name.
12809
+ *
12810
+ * Always the object form, unlike {@link buildDeployConcurrency}: a diff job
12811
+ * has no legacy bare-string shape to stay byte-identical with, and
12812
+ * `cancel-in-progress` is load-bearing enough here to spell out. It must
12813
+ * stay `false` — a superseded diff cancelled mid-`CreateChangeSet`
12814
+ * leaves the fixed-name change set occupied for whichever run comes next,
12815
+ * which is the failure the group exists to prevent.
12816
+ *
12817
+ * Carries the branch under
12818
+ * {@link DeployWorkflowOptions.branchScopedConcurrency} for the same reason
12819
+ * the deploy group does: when stack names are derived from the branch, two
12820
+ * branches diff separate stacks and therefore separate change sets, so one
12821
+ * repo-wide lock across all of them would queue for nothing.
12822
+ */
12823
+ private buildDiffConcurrency;
12806
12824
  /**
12807
12825
  * Build the slug that makes a target unique among every target in the plan
12808
12826
  * workflow, across every deploy component feeding it.
package/lib/index.d.ts CHANGED
@@ -12648,11 +12648,12 @@ interface DeployWorkflowOptions {
12648
12648
  * account, so anything they share outside their own stacks — a parent hosted
12649
12649
  * zone, an account-level singleton — has to tolerate concurrent mutation.
12650
12650
  *
12651
- * Applies to the deploy job only. The `plan-apply` gate's apply job keeps the
12652
- * unsuffixed group: an apply is dispatched from whatever ref the operator
12653
- * happens to be on, which says nothing about the branch that was planned, so
12654
- * a branch key there would weaken the mutual exclusion rather than sharpen
12655
- * it.
12651
+ * Applies to the deploy job and when diff capture is on — to each target's
12652
+ * diff job, which locks the same branch's stacks for the same reason. The
12653
+ * `plan-apply` gate's apply job keeps the unsuffixed group: an apply is
12654
+ * dispatched from whatever ref the operator happens to be on, which says
12655
+ * nothing about the branch that was planned, so a branch key there would
12656
+ * weaken the mutual exclusion rather than sharpen it.
12656
12657
  *
12657
12658
  * @see `docs/packages/@codedrifters/configulator/workflows/aws-deploy-workflow.md`
12658
12659
  * @default false - the group is the deployment target alone
@@ -12786,7 +12787,7 @@ declare class AwsDeployWorkflow extends Component {
12786
12787
  */
12787
12788
  readonly diffOptions: Required<DeployDiffOptions>;
12788
12789
  /**
12789
- * Whether each deploy job's concurrency group carries the branch.
12790
+ * Whether each deploy and diff job's concurrency group carries the branch.
12790
12791
  */
12791
12792
  readonly branchScopedConcurrency: boolean;
12792
12793
  /**
@@ -12852,6 +12853,23 @@ declare class AwsDeployWorkflow extends Component {
12852
12853
  * jobs for one target sort next to each other in the run view.
12853
12854
  */
12854
12855
  private buildDiffJobName;
12856
+ /**
12857
+ * Build a diff job's `concurrency` setting from its job name.
12858
+ *
12859
+ * Always the object form, unlike {@link buildDeployConcurrency}: a diff job
12860
+ * has no legacy bare-string shape to stay byte-identical with, and
12861
+ * `cancel-in-progress` is load-bearing enough here to spell out. It must
12862
+ * stay `false` — a superseded diff cancelled mid-`CreateChangeSet`
12863
+ * leaves the fixed-name change set occupied for whichever run comes next,
12864
+ * which is the failure the group exists to prevent.
12865
+ *
12866
+ * Carries the branch under
12867
+ * {@link DeployWorkflowOptions.branchScopedConcurrency} for the same reason
12868
+ * the deploy group does: when stack names are derived from the branch, two
12869
+ * branches diff separate stacks and therefore separate change sets, so one
12870
+ * repo-wide lock across all of them would queue for nothing.
12871
+ */
12872
+ private buildDiffConcurrency;
12855
12873
  /**
12856
12874
  * Build the slug that makes a target unique among every target in the plan
12857
12875
  * workflow, across every deploy component feeding it.
package/lib/index.js CHANGED
@@ -43024,6 +43024,28 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen29.Compone
43024
43024
  target.region
43025
43025
  ].join("-");
43026
43026
  };
43027
+ /**
43028
+ * Build a diff job's `concurrency` setting from its job name.
43029
+ *
43030
+ * Always the object form, unlike {@link buildDeployConcurrency}: a diff job
43031
+ * has no legacy bare-string shape to stay byte-identical with, and
43032
+ * `cancel-in-progress` is load-bearing enough here to spell out. It must
43033
+ * stay `false` — a superseded diff cancelled mid-`CreateChangeSet`
43034
+ * leaves the fixed-name change set occupied for whichever run comes next,
43035
+ * which is the failure the group exists to prevent.
43036
+ *
43037
+ * Carries the branch under
43038
+ * {@link DeployWorkflowOptions.branchScopedConcurrency} for the same reason
43039
+ * the deploy group does: when stack names are derived from the branch, two
43040
+ * branches diff separate stacks and therefore separate change sets, so one
43041
+ * repo-wide lock across all of them would queue for nothing.
43042
+ */
43043
+ this.buildDiffConcurrency = (diffJobName) => {
43044
+ return {
43045
+ group: this.branchScopedConcurrency ? `${diffJobName}-${BRANCH_NAME_EXPRESSION}` : diffJobName,
43046
+ "cancel-in-progress": false
43047
+ };
43048
+ };
43027
43049
  /**
43028
43050
  * Build the slug that makes a target unique among every target in the plan
43029
43051
  * workflow, across every deploy component feeding it.
@@ -43656,6 +43678,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen29.Compone
43656
43678
  contents: import_workflows_model7.JobPermission.READ,
43657
43679
  idToken: import_workflows_model7.JobPermission.WRITE
43658
43680
  },
43681
+ concurrency: this.buildDiffConcurrency(diffJobName),
43659
43682
  if: jobCondition,
43660
43683
  steps: [...this.diffSteps(target)]
43661
43684
  });