Skip to content

Phase 0 PR Review -- Scratch / Action Notes

  1. The proper location of the constructs is not in src/main/cdk/constructs/email but rather in src/main/cdk/constructs/xgress.

    • Rationale: the xgress directory contains all the mechanisms by which the system can send or receive information and interactions for the external world.
  2. Should Adopt recommendation.

  3. Follow M3 decision.

  • O.K. to keep, need to be documented as extension in the requirements and design documentation.
FindingAction
M1Adopt Recommendation
M2Adopt Recommendation
M3(1) Adopt Short term recommendation (2) Create Issue in Linear: Team PDEV, Initiative Product / OAM / Security, Project Security / Improvements, Release: MVP3, Title: Infrastructure 1Password secret reader
M5Adopt Recommendation
M4Adopt Recommendation

| Finding | Action | | N1 | (1) Hoist logging.ts to scripts/lib/, (2) Adopt Recommendation | | N2 | Adopt recommendation after N1 mitigation is complete and logging.ts is relocated | | N3 | PENDING | | N4 | Keep As-Is for now | | N5 | Verify they are in Documentation PR: https://github.com/Arda-cards/documentation/pull/64 | | N6 | As part of the redaction utility relocation (N1), the coverage should be enhanced. The unit tests should also be moved and enhanced | | N7 | Agreed. This stack is very likely to not change much. DESTROY helps with the operations workflows | | N8 | This is actually a bigger issue than it appears. It conflates the “freeKanban” server with the partition configuration. It needs to be redesigned based on the newly stated principles so that (1) Partitions do not know anything at all about the free kanban tool (this is part of the Corporate instance class) and (2) there are no magic if-then-else conditions in the code, the behavior should be driven by configuration of the stack, not by “control flags” that introduce control coupling between different parts and layers in the system |

| Finding | Action | | Nit-1 | Should be part of next round of commits | | Nit-2 | No Action | | Nit-3 | Make the update in the next push | | Nit-4 | Add the comment |

Reading the Diagram, unless an arrow has a specific label:

  • The contents of Runtime represents the instances that are created when the scripts are run.
  • The contents of IaC represents the code Artifacts that define the configuration for the instances.
  • .|> arrows mean instantiation of
  • .> arrows in the IaC scope mean import as it is the only meaningful relationship at code time.
  • .> arrows in the Runtime scope means uses the values of the target object.
  • *-> arrows mean contains as in the Application contains Stack.

PlantUML diagram

(b) C2 text is canonical

The Diagram is correct:

Rationale: We want to differentiate between the Stack (set of resources that share a lifecycle, i.e. deploy together) and the Constructs that define them. The Stack is properly named CorporateEmail as it will include all the resources needed for Corporate Email, not just Dns records, even though right now the only contents is those records.

This is a mistake in the diagram. That was intended to be an informative arrow. The real mechanism is that the PostMarkServer construct will have some built-with values that the Stack will transfer to the DnsRecordSet and neither construct depends on the other. The arrow can be eliminated, the dependency is handled by the calling Stack.

The correct solution is (a). For this interim we are going to externalize that dependency and absorb it in the Corporate CLI layer (b). Documentation must reflect this explicit Tradeoff.