← AWS Retail Store Sample AppExamplesLegal NoticePrivacy

StackToIT Migration Intelligence Workspace

PROPOSAL — generated by StackToIT Assess. Architect review required before any decision.

Partially executable migration package · Proposal only · Not approved.

Technical details: run, versions, digest and evidence freshness

Assessment

Assessment
default (assessment format 0.24.0)
Assessment timestamp
Generated 2026-11-02 12:08 UTC by stacktoit 0.6.0-11562-g1966ddf116 (1966ddf116)
Run
f6267c3f-2848-4aa5-89df-5fee8b15b3b9 · source digest sha256:812c5ae3f6cc8530163abbf5b6fbe305ed3b363c4886ec6b87623db857ea0c70
Source snapshot
partly decided only at plan time · aws not locked; random not locked
STACKIT target profile
Stable network model: the experimental STACKIT VPC resources are not used (STACKIT_STABLE)
STACKIT provider version
0.121.0
Knowledge base version
0.384.0
Evidence freshness
Not assessed — Evidence freshness as one measure is not assessed in this build. Dated evidence is shown where it is used: each STACKIT support option and each assurance row states when it was verified (verified_at, and recheck_after for support), in support_suitability and assurance. The date beside a readiness dimension is the assessment date, not a retrieval date.

Staleness: Not assessed — This build has no change detection, so there has been no re-check since the assessment was made (Generated 2026-11-02 12:08 UTC). The source may have changed since.

Source checks: Built-in source checks passed — OpenTofu validation of the source did not run (LOCK_FILE)

Run status: COMPLETE (report published). Source: partly decided only at plan time. Draft: GENERATED. The report was written whole; this is not a statement that the migration is ready.

Executive lens: the sections are in the order this reader usually wants, and Architecture and Engineering Evidence are put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Architect lens: the sections are in the order this reader usually wants, and Costs is put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Platform lens: the sections are in the order this reader usually wants, and Costs is put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Security lens: the sections are in the order this reader usually wants, and Costs and Migration Plan are put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Application owner lens: the sections are in the order this reader usually wants, and Engineering Evidence is put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Programme lens: the sections are in the order this reader usually wants, and Engineering Evidence is put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

FinOps lens: the sections are in the order this reader usually wants, and Architecture and Engineering Evidence are put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Engineering lens: the sections are in the order this reader usually wants, and Costs is put aside. Nothing is removed from the page: choose All to show every section in the order of the navigation, or follow a link into a section that is put aside.

Decisions

The decisions people must take, aggregated, with their options, owners and deadlines.

16 decisions to make and 2 defaults to confirm; 9 of the 16 decisions to make hold 79 steps back (of the 314 steps of the plan); 48 units to review.

First required action: Allow the calls of STACKIT APIs that are not generally available — Owner: Platform Architect. What an answer frees: The answer that frees most frees 4 steps by itself and 6 steps more together with other open decisions; 64 of the 74 steps it holds stay held whatever is decided (the plan does not let them run). Open its card

Root causes (1)

DEC-GEN-CONVERT-ENGINE-VERSION-DOWNGRADE — deciding it frees 0 dependent items on 0 dependent units

Why: The source runs an engine version newer than every version STACKIT offers in the region (1 converter decision): a snapshot of the newer engine is not restored into the older one, so the step that creates the instance waits until a person chooses how the data reaches the offered version (re-read from the source), runs the engine self-managed on SKE, or waits for the version; the unit that owns one is not automation-eligible until then..

Next: Decide engine version downgrade for module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this: choose one of the 3 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml). Open the record

Its own records: DEC-GEN-CONVERT-ENGINE-VERSION-DOWNGRADE.

Dependent records: .

Show the 0 dependent units

No decisions file was given with this run (stacktoit assess --decisions FILE): every record is open.

How this register works

Decision register: built; 16 decisions to make (9 plan decisions, 5 manual actions, 2 plan statements, 2 of them with the draft's DEFAULT to confirm or change) · 2 defaults to confirm (other records, no step waits for them) · 48 units to review (308 critical settings: 307 to decide (25 of them are conditional), 1 confirm only) on 48 units. Records: 11 plan decision records, 95 critical setting records, 5 manual action records, 2 plan statement records. Records group four lists: the open decisions of the plans of the draft this run wrote, by the part of the draft (security group, routing, identity, logs, server) and the kind of the decision (plan decisions); the open critical semantics of the units, by the contract family and the semantic (critical semantics); the manual actions of the plans, by the part of the draft and the kind of the action (manual actions); and the open statements of the plans about units they write no resource for (a redesign, a review, a block, a failed model, or a step beside a unit whose draft a converter writes), by the part of the draft and the reason (plan statements). Plan decisions and manual actions cover only drafted units whose draft passed StackToIT's own checks, and only the families whose draft this run wrote from a plan: a family with no plan has none to list. A plan statement covers a unit the plan writes nothing for, whether or not a draft check ran over it; a statement that leaves nothing to a person (a unit the plan does not draft and no manual action of it names) is counted apart from the records and is no record. A record shows the review of an overlay beside the open state the engine reached; a review closes no critical semantic and changes no draft, target plan, gate, class, confidence or eligibility. An accepted plan decision frees the steps of the execution plan that wait for it only when the answer's effect acknowledges the current draft; an option that changes the draft keeps them held until the draft is regenerated with it. Records of the family "convert" are decisions of the converter's own generators, outside every plan: a constraint conflict (a variable whose consumers' STACKIT bounds exclude one another keeps the source default) and an ambiguous selection (the source does not prove which instance, interface, key pair, gateway, peer, subnet, proxy, URL map or health check it means, so the draft holds a required variable without a default); the unit that owns one is not automation-eligible. They are listed for a drafted unit whose plan checks did not fail.

Of the 113 records, 1 root blockers (1 open item), 102 open on their own (317 open items), 10 conditional on a count or for_each (29 open items), 0 propagated from a root cause (0 open items). 1 root cause, 0 dependent units. A record is a view over its members: a propagated one stays in the register with every member, it is folded under its root cause below.

A root cause is a unit other open items rest on: the target does not carry its decision, so what the units that name it become is not assessed. Deciding the root is what frees its dependents; each dependent stays a record of its own, folded here.

Accepting a record changes nothing in the draft or in the assessment: the plan's decisions stay open in target-plan.json, an open critical semantic stays open, and the execution plan frees a step that waits for an accepted plan decision only when the answer's effect acknowledges the current draft (an option that changes the draft keeps the step held until the draft is regenerated with it; an option with no stated effect frees nothing); the record shows the architect's answer beside the engine's reading, and no class, confidence, gate or eligibility depends on a record. A record is accepted only when every member it groups is; a partial or outdated approval never makes it accepted, and a rejection is not an approval: a rejected record stays open and is listed under Open as well as under Rejected.

One card per record of the register, the first required action first, then the records you can answer now (those with options to choose from, then those that wait for an input or a confirmation), then the guidance-only records (no choice to make: a check or a person does what they say), in groups by work package: what you do next, what the draft does, what is still open, the ways out and what closes it. What the records of one kind share is said once above them. The record’s own fields (its kind, its units, its options and its review) are folded under Technical details; its owner role and the phase it is required by are on its first line. Under it, each card states its options with the trade-off of each, the applications it touches (a group the run suggested from the source is labelled PROPOSED: it is not an application you confirmed), its wave (the dependency order of the units, a technical order and not a schedule) and where its approval stands (STALE where the answer no longer holds); decisions.json holds every record with its evidence. An answer is recorded in the decisions file given with --decisions, an input in the inputs file given with --inputs; the run folder holds the templates of both files to fill (decisions-template.yaml, inputs-template.yaml). The inputs template has three groups: the requests an answer changes the draft for, the ones a person does by hand, and, last and as comments with no stub, the requests this build records an answer to and does not apply, each with where the setting is made instead (the target environment). No decisions file was given with this run, so no card shows a review.

In the technical details, “None named” under applications means no applications file was given or none of its applications confirmedly contains an affected unit; “None listed” under options means the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file; no option is recommended unless its evidence is conclusive (the machine forces no recommendation).

Decision centre (113 records)

Start here: the first required action and the records with options to choose from.

Other decisions (no work package stated)

10 records: 9 open input · 1 blocked
First required action Allow the calls of STACKIT APIs that are not generally available open input

4 units: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db, module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch and 2 more · owner role Platform Architect · required by phase: before the pilot · 4 steps rest on it

Options and trade-off
  • allow-calls-of-the-api Allow the calls of the API for this migration: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 4 steps by itself and 6 steps more together with other open decisions
Applications touched
orders (PROPOSED)
  • module.retail_app_ecs.aws_secretsmanager_secret.catalog_db is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
  • module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
Wave
waves 2 to 5 · steps in security
What an answer frees
The answer that frees most frees 4 steps by itself and 6 steps more together with other open decisions; 64 of the 74 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds API/secrets-manager-vault/WriteSecret/module.retail_app_ecs.aws_secretsmanager_secret.catalog_db, API/secrets-manager-vault/WriteSecret/module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch, API/secrets-manager-vault/WriteSecret/module.retail_app_ecs.aws_secretsmanager_secret.mq and API/secrets-manager-vault/WriteSecret/module.retail_app_ecs.aws_secretsmanager_secret.orders_db until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The plan calls a STACKIT API that is not generally available (alpha, beta, or a release status its documentation does not state), which may change or be withdrawn, so it makes those calls only after you allow them (1 API): until you answer, the calls and the steps of their path wait. Allowing carries them out; refusing keeps the draft's own path where the API's path is an alternative beside it, and leaves the question open where the API is the only carrier of what its call sets. No block of the draft waits for it, and no unit's eligibility rests on it.
Ways out
  1. Allow the calls of the API for this migration; effect: The calls of the API the plan states are made as the plan writes them (the request documents of the execution package), and the steps of their path are taken; the migration then depends on an API that may change or vanish.
What closes it
Every API the record lists is answered in the decisions file: allowed, or refused.
Next action
Allow STACKIT's pre-release API, which may change or be withdrawn: Secrets Manager v1 (release status not stated). 4 steps wait for this answer; allowing the calls lets the plan carry them out and makes the migration depend on that API. If you say no (record a rejection), the calls are not made: the steps of Secrets Manager stay open. Record the answer in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-CONVERT-API-OPT-IN (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
api opt in, of the convert part of the draft
The plan’s reasons
  • the Secrets Manager Vault-compatible API is of a maturity that is not established (its documentation states no release status and its product documentation does not establish it as generally available): the execution plan executes no call of an API that is not generally available without an explicit opt-in, so the calls of it and the steps of its path for module.retail_app_ecs.aws_secretsmanager_secret.catalog_db, module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch, module.retail_app_ecs.aws_secretsmanager_secret.mq, module.retail_app_ecs.aws_secretsmanager_secret.orders_db wait for this decision; the draft's own blocks do not
  • the platform's consent to depend on an API that may change or vanish (alpha, beta, or a maturity the documentation does not establish)
Affected applications
None named.
Plan decisions
1 alias convert:api:secrets-manager-vault:v1:unknown:API_OPT_IN
Options
1, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • allow-calls-of-the-api — Allow the calls of the API for this migration. The calls of the API the plan states are made as the plan writes them (the request documents of the execution package), and the steps of their path are taken; the migration then depends on an API that may change or vanish. (sources: https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/functions/v1alpha/functions.json#L767-L771; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Draft: engine version downgrade open input

1 unit: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this · owner role Data Architect · required by phase: before the pilot · 1 step rests on it

Options and trade-off
  • move-the-data-into-the-offered-version Move the data into the version STACKIT offers, by re-reading it from the source: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 2 steps by itself and 17 steps more together with other open decisions
  • run-the-engine-self-managed-on-ske Run the source's engine version yourself on SKE (self-managed): it changes the draft: the draft is generated again with it, and the steps stay held until then; in this run it frees no step
  • wait-for-the-version Wait until STACKIT offers the source's version: it changes the draft: the draft is generated again with it, and the steps stay held until then; in this run it frees no step
Applications touched
catalog (PROPOSED)
Wave
wave 4 · steps in platform services
What an answer frees
The answer that frees most frees 2 steps by itself and 17 steps more together with other open decisions; 65 of the 84 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds TF/stackit_opensearch_instance.dependencies_catalog_opensearch_this until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The source runs an engine version newer than every version STACKIT offers in the region (1 converter decision): a snapshot of the newer engine is not restored into the older one, so the step that creates the instance waits until a person chooses how the data reaches the offered version (re-read from the source), runs the engine self-managed on SKE, or waits for the version; the unit that owns one is not automation-eligible until then.
Ways out
  1. Move the data into the version STACKIT offers, by re-reading it from the source; effect: The instance is created with the version STACKIT offers (the draft's version variable is set to it, e.g. 2 for OpenSearch), and the data is re-read from the source rather than restored from a snapshot: an OpenSearch index is reindexed from the source (or the application writes to both during the cutover), a database is exported and imported with the clients of the engine. A snapshot of the newer engine is not restored into the older one. The applications are tested against the older version first; whether they work is not known from the source.
  2. Run the source's engine version yourself on SKE (self-managed); effect: The managed STACKIT instance is not used: the customer runs the engine at the source's version on a STACKIT Kubernetes Engine cluster (an operator or a chart of its own) and operates it (upgrades, backups, monitoring). The draft does not write that workload, so it is changed (the managed instance removed, the workload added) before the step is applied.; the draft is generated again with it
  3. Wait until STACKIT offers the source's version; effect: The unit stays where it is until the region's catalogue lists the source's version; the draft is then regenerated against the new catalogue (the version check compares again), and the step stays blocked until then. STACKIT announces new service versions in the release notes of the service (OpenSearch: "STACKIT OpenSearch2 is now available", May 15, 2023); no date for a newer version is stated.; the draft is generated again with it
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Decide engine version downgrade for module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this: choose one of the 3 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-CONVERT-ENGINE-VERSION-DOWNGRADE (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
engine version downgrade, of the convert part of the draft
The plan’s reasons
  • the source runs OpenSearch 3.3 (engine_version), newer than every version the eu01 catalogue (2026-10-18) lists for stackit_opensearch_instance (2): a snapshot of 3.3 cannot be restored into 2 (OpenSearch restores a snapshot into the same or a newer version only); reindex from the source, or write to both during the cutover (dual-write), is the path; whether the clients work against 2 is unknown
  • whether the applications and their client libraries work against the older engine version STACKIT offers (queries, mappings, plugins, protocol features)
  • the size of the data and the downtime the business tolerates, to choose between re-reading the data from the source and writing to both during the cutover
Affected applications
None named.
Plan decisions
1 alias convert:module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this:version:ENGINE_VERSION_DOWNGRADE
Options
3, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • move-the-data-into-the-offered-version — Move the data into the version STACKIT offers, by re-reading it from the source. The instance is created with the version STACKIT offers (the draft's version variable is set to it, e.g. 2 for OpenSearch), and the data is re-read from the source rather than restored from a snapshot: an OpenSearch index is reindexed from the source (or the application writes to both during the cutover), a database is exported and imported with the clients of the engine. A snapshot of the newer engine is not restored into the older one. The applications are tested against the older version first; whether they work is not known from the source. (sources: https://docs.opensearch.org/latest/tuning-your-cluster/availability-and-recovery/snapshots/snapshot-restore/, https://www.postgresql.org/docs/current/app-pgdump.html, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/opensearch_instance.md#L35; the words they rest on are quoted in decisions.json)
  • run-the-engine-self-managed-on-ske — Run the source's engine version yourself on SKE (self-managed). The managed STACKIT instance is not used: the customer runs the engine at the source's version on a STACKIT Kubernetes Engine cluster (an operator or a chart of its own) and operates it (upgrades, backups, monitoring). The draft does not write that workload, so it is changed (the managed instance removed, the workload added) before the step is applied. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L55; the words they rest on are quoted in decisions.json)
  • wait-for-the-version — Wait until STACKIT offers the source's version. The unit stays where it is until the region's catalogue lists the source's version; the draft is then regenerated against the new catalogue (the version check compares again), and the step stays blocked until then. STACKIT announces new service versions in the release notes of the service (OpenSearch: "STACKIT OpenSearch2 is now available", May 15, 2023); no date for a newer version is stated. (sources: https://docs.stackit.cloud/products/databases/opensearch/release-notes/; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Choose how the data is moved blocked

5 units: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this and 3 more · owner role Data Architect · required by phase: before the pilot · 38 steps rest on it

Options and trade-off
  • export-and-import-with-the-engine-clients Export the data from the source and import it with the clients of the target engine: a person carries it out: the answer frees only the manual step that does; in this run it frees 12 steps by itself and 3 steps more together with other open decisions
  • replicate-with-the-engine-replication Replicate the data with the replication of the source engine until the cutover: a person carries it out: the answer frees only the manual step that does; in this run it frees 6 steps by itself
  • migrate-with-a-tool-of-my-own Move the data with a migration tool or a replication of the owner's own: a person carries it out: the answer frees only the manual step that does; in this run it frees 18 steps by itself and 14 steps more together with other open decisions
Applications touched
catalog (PROPOSED), checkout (PROPOSED), orders (PROPOSED)
  • module.dependencies.module.catalog_rds.aws_rds_cluster.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
  • module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: carts, checkout
Wave
waves 1 to 4 · steps in platform services, cutover, decommission
What an answer frees
The answer that frees most frees 18 steps by itself and 14 steps more together with other open decisions; 82 of the 114 steps it holds stay held (65 steps whatever is decided; the rest need another option, a regenerated draft or a path of a person).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/write-freeze/client-import, MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/final-sync/client-import, MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/reconcile/client-import, MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/write-freeze/own-tool, MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/final-sync/own-tool, MAN/data/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this/reconcile/own-tool, MAN/data/module.dependencies.module.catalog_rds.aws_rds_cluster.this/write-freeze/dump-restore, MAN/data/module.dependencies.module.catalog_rds.aws_rds_cluster.this/final-sync/dump-restore, MAN/data/module.dependencies.module.catalog_rds.aws_rds_cluster.this/reconcile/dump-restore, MAN/data/module.dependencies.module.catalog_rds.aws_rds_cluster.this/write-freeze/own-tool and 28 more until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The method that moves the data of a store (a database, a cache, a search domain, or the objects of a bucket) to its STACKIT service is a person's choice (5 converter decisions): the steps of each method are in the plan where the planner covers the store (a PostgreSQL database and an S3 bucket, each with the runbook of the move), and the plan holds one manual step the person writes where it does not; the steps of the move wait for the choice. The choice decides how the data is moved, not whether it is: every method is work a person does by hand, so the unit that owns one keeps a manual data-migration step, and answering it does not make the unit automation-eligible.
Ways out
  1. Export the data from the source and import it with the clients of the target engine; effect: A person exports the data from the source and imports it into the STACKIT instance with the clients of its engine during a window the business accepts, then checks that the copy is complete; the clients reach the instance at the host and port its credential states. The source and the target engine may differ (DynamoDB to MongoDB Flex), so the export is converted where they do. The plan holds the steps of this option as typed steps: for a PostgreSQL database, for a MySQL, MariaDB or Aurora MySQL database moving to MariaDB and for an RDS for SQL Server database moving to SQLServer Flex (the native backup, its copy to a STACKIT S3 bucket and the import_database call) the preflight, the rehearsal, the write freeze, the dump or backup and the restore or import inside it, the reconcile and the cleanup; for an ElastiCache, MemoryDB or ElastiCache serverless cache moving to a Key Value Store the preflight, the rehearsal, the write freeze, the copy by a client, the reconcile and the cleanup; for an Amazon Aurora DSQL cluster moving to PostgreSQL Flex the preflight, the rehearsal, the write freeze, the copy of the tables by a client (the schema from the catalogs of the cluster, or from pg_dump --schema-only where the preflight shows that it works, and the rows through the PostgreSQL protocol: no AWS page read documents a dump of a cluster), the reconcile and the cleanup; for an OpenSearch store the write freeze, the copy and the reconcile. The decision offers this option only for a store whose STACKIT service documents a way in with such clients: PostgreSQL Flex (for an Aurora DSQL cluster, which has no change stream, this option and the tool of the customer's own are the only ones; the replication of the engine is not offered), MariaDB (the mysql client loads a dump into an empty instance), SQLServer Flex (a .bak file imported with import_database), Key Value Store (the tutorial migrates a Redis instance by the MIGRATE command; for an ElastiCache source, where AWS lists migrate among the commands unavailable for caches running Redis OSS, the copy is a client that iterates the keys with SCAN and copies each with DUMP, PTTL and RESTORE; for a MemoryDB source, where AWS lists migrate, sync, psync, bgsave, save and config among the unavailable commands and the cluster mode is always on, the same client copy runs against every shard primary found with CLUSTER NODES or CLUSTER SLOTS, with TLS where the source has it and an ACL user that reaches every key; whether DUMP, RESTORE and PTTL run on a standard MemoryDB cluster is not stated by AWS, and for a member of a multi-Region cluster, whose page lists PTTL as unsupported, the step says the TTLs are not carried) and OpenSearch (the reindex operation). For a store without a documented way in (MongoDB Flex, a memcached cache) it is not offered and the decision offers the tool of the customer's own alone.
  2. Replicate the data with the replication of the source engine until the cutover; effect: A person sets up the replication of the source engine so that the STACKIT instance follows the source while the application keeps writing to the source (for PostgreSQL, logical replication: the schema is copied first with pg_dump --schema-only, a publication on the source and a subscription on the target copy the existing rows and then the changes, and the sequences are copied inside the write freeze because they are not replicated). The source needs a change and a reboot to turn replication on, and the target must be able to reach the source. Inside the write freeze the person waits until the target has caught up, compares both sides and switches the clients, then removes the replication. For a PostgreSQL database the plan holds the steps of this option (the initial copy, the watch of the lag, the freeze, the final copy, the reconcile and the cleanup); for an S3 bucket this option is not available, because S3 Replication copies between Amazon S3 buckets and no STACKIT bucket is documented as a destination (the plan holds the two copy tools instead); for any other engine this option is not offered, because no STACKIT service other than PostgreSQL Flex documents the replication of a source engine into it (MariaDB, Key Value Store, OpenSearch and MongoDB Flex document none, and the SQLServer Flex page on transactional replication describes an on-premises publisher and does not name Amazon RDS as one), so the decision of such a store offers the export and the import with the engine clients where its service documents them, and the tool of the customer's own.
  3. Move the data with a migration tool or a replication of the owner's own; effect: A person moves the data with a tool or a replication they run (for example a change-data-capture replication that keeps the copy in step until the cutover), writes its steps, the checks before the move, the cutover window and the way back, and carries them out. The STACKIT instance is reached at the host and port its credential states. The plan holds that work as typed steps: the write freeze of the source, the copy as one step whose commands the person writes, and the reconcile that compares both sides; the source stays the way back until the reconcile records GO, which a person checks, since the plan cannot know that the tool leaves the source unchanged. A memcached cache holds a confirmation instead of a copy. A bucket repeated by count or for_each has neither a reconcile nor any other option: its instances and the buckets they move to are not named, so the plan holds the one manual step, which the person writes for each instance after naming them.
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
The plan states that no answer makes MAN/data/module.dependencies.module.catalog_rds.aws_rds_cluster.this/cleanup/dump-restore, MAN/data/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/cleanup/client-import, MAN/data/module.dependencies.module.orders_rds.aws_rds_cluster.this/cleanup/dump-restore and MAN/data/module.dependencies.module.orders_rds.aws_rds_cluster.this/cleanup/logical-replication executable for module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this and 1 more: change the draft or the source that holds it before anything rests on this record.

This record holds 5 questions, one per unit. An answer applies only to the members it names (members: in the decisions file; a member is named by the record id, a slash and its unit); an entry that names none answers every member, and that blanket answer is yours to write: the template never writes it.

What each option does to each of the 5 units
  1. module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this; what the plan says of it: StackToIT moves no data and writes no runbook for aws_opensearch_domain to STACKIT OpenSearch; the data-movement register lists module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this with the mechanism UNKNOWN, and the source states neither the size of the data nor the downtime the business tolerates nor the consistency the application needs
    • export-and-import-with-the-engine-clients: a manual alternative: a person carries it out for this unit
    • migrate-with-a-tool-of-my-own: a manual alternative: a person carries it out for this unit
  2. module.dependencies.module.catalog_rds.aws_rds_cluster.this; what the plan says of it: the plan defines the one method the STACKIT MariaDB pages document, a dump loaded with the mysql client into the empty instance, and the customer's own tool; the replication of the binary log is refused because no STACKIT page documents it; STACKIT has no managed MySQL, so a MySQL source is an engine change whose collations, DEFINER accounts, accounts and settings the checks of the plan name, and the size of the data, the downtime the business accepts and the consistency the application needs are not in the source; the steps wait for the answer
    • export-and-import-with-the-engine-clients: a manual alternative: a person carries it out for this unit
    • migrate-with-a-tool-of-my-own: a manual alternative: a person carries it out for this unit
  3. module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; what the plan says of it: the plan defines the one method the STACKIT pages and the ElastiCache pages allow together, a copy of the keys by a client (SCAN, DUMP, PTTL, RESTORE) inside the write freeze, and the customer's own tool; loading an exported snapshot is refused because no STACKIT page or API takes an RDB file, and following the source as a replica is refused because neither end offers it; the source does not say whether the cache holds only what the application rebuilds, the size of the data, the downtime the business accepts or the shards the keys are spread over, and the Key Value Store has no sharding; the steps wait for the answer
    • export-and-import-with-the-engine-clients: a manual alternative: a person carries it out for this unit
    • migrate-with-a-tool-of-my-own: a manual alternative: a person carries it out for this unit
  4. module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; what the plan says of it: StackToIT moves no data and writes no runbook for aws_dynamodb_table to STACKIT MongoDB Flex; the data-movement register lists module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this with the mechanism UNKNOWN, and the source states neither the size of the data nor the downtime the business tolerates nor the consistency the application needs
    • migrate-with-a-tool-of-my-own: a manual alternative: a person carries it out for this unit
  5. module.dependencies.module.orders_rds.aws_rds_cluster.this; what the plan says of it: the plan defines both methods of the engine (a dump restored inside the write freeze, and a logical replication that follows the changes until the freeze) and keeps them open: which one applies depends on the size of the data, the write rate and the downtime the business accepts, and the source states none of them; the steps of the methods wait for the answer
    • export-and-import-with-the-engine-clients: a manual alternative: a person carries it out for this unit
    • replicate-with-the-engine-replication: a manual alternative: a person carries it out for this unit
    • migrate-with-a-tool-of-my-own: a manual alternative: a person carries it out for this unit
Technical details

Record DEC-GEN-CONVERT-DATA-MOVEMENT (plan decision) · action: no supported STACKIT path · decisions.json

Decision
data movement, of the convert part of the draft
The plan’s reasons
  • StackToIT moves no data and writes no runbook for aws_dynamodb_table to STACKIT MongoDB Flex; the data-movement register lists module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this with the mechanism UNKNOWN, and the source states neither the size of the data nor the downtime the business tolerates nor the consistency the application needs
  • StackToIT moves no data and writes no runbook for aws_opensearch_domain to STACKIT OpenSearch; the data-movement register lists module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this with the mechanism UNKNOWN, and the source states neither the size of the data nor the downtime the business tolerates nor the consistency the application needs
  • the plan defines both methods of the engine (a dump restored inside the write freeze, and a logical replication that follows the changes until the freeze) and keeps them open: which one applies depends on the size of the data, the write rate and the downtime the business accepts, and the source states none of them; the steps of the methods wait for the answer
  • the plan defines the one method the STACKIT MariaDB pages document, a dump loaded with the mysql client into the empty instance, and the customer's own tool; the replication of the binary log is refused because no STACKIT page documents it; STACKIT has no managed MySQL, so a MySQL source is an engine change whose collations, DEFINER accounts, accounts and settings the checks of the plan name, and the size of the data, the downtime the business accepts and the consistency the application needs are not in the source; the steps wait for the answer
  • the plan defines the one method the STACKIT pages and the ElastiCache pages allow together, a copy of the keys by a client (SCAN, DUMP, PTTL, RESTORE) inside the write freeze, and the customer's own tool; loading an exported snapshot is refused because no STACKIT page or API takes an RDB file, and following the source as a replica is refused because neither end offers it; the source does not say whether the cache holds only what the application rebuilds, the size of the data, the downtime the business accepts or the shards the keys are spread over, and the Key Value Store has no sharding; the steps wait for the answer
  • the size of the data, the downtime the business tolerates and the consistency the application needs, to choose the method and the cutover window
Affected applications
None named.
Plan decisions
5
Show the 5 plan decisions
  • DEC-GEN-CONVERT-DATA-MOVEMENT/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this — alias convert:module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this:data:DATA_MOVEMENT
  • DEC-GEN-CONVERT-DATA-MOVEMENT/module.dependencies.module.catalog_rds.aws_rds_cluster.this — alias convert:module.dependencies.module.catalog_rds.aws_rds_cluster.this:data:DATA_MOVEMENT
  • DEC-GEN-CONVERT-DATA-MOVEMENT/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default — alias convert:module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default:data:DATA_MOVEMENT
  • DEC-GEN-CONVERT-DATA-MOVEMENT/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this — alias convert:module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this:data:DATA_MOVEMENT
  • DEC-GEN-CONVERT-DATA-MOVEMENT/module.dependencies.module.orders_rds.aws_rds_cluster.this — alias convert:module.dependencies.module.orders_rds.aws_rds_cluster.this:data:DATA_MOVEMENT
Options
3, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • export-and-import-with-the-engine-clients — Export the data from the source and import it with the clients of the target engine. A person exports the data from the source and imports it into the STACKIT instance with the clients of its engine during a window the business accepts, then checks that the copy is complete; the clients reach the instance at the host and port its credential states. The source and the target engine may differ (DynamoDB to MongoDB Flex), so the export is converted where they do. The plan holds the steps of this option as typed steps: for a PostgreSQL database, for a MySQL, MariaDB or Aurora MySQL database moving to MariaDB and for an RDS for SQL Server database moving to SQLServer Flex (the native backup, its copy to a STACKIT S3 bucket and the import_database call) the preflight, the rehearsal, the write freeze, the dump or backup and the restore or import inside it, the reconcile and the cleanup; for an ElastiCache, MemoryDB or ElastiCache serverless cache moving to a Key Value Store the preflight, the rehearsal, the write freeze, the copy by a client, the reconcile and the cleanup; for an Amazon Aurora DSQL cluster moving to PostgreSQL Flex the preflight, the rehearsal, the write freeze, the copy of the tables by a client (the schema from the catalogs of the cluster, or from pg_dump --schema-only where the preflight shows that it works, and the rows through the PostgreSQL protocol: no AWS page read documents a dump of a cluster), the reconcile and the cleanup; for an OpenSearch store the write freeze, the copy and the reconcile. The decision offers this option only for a store whose STACKIT service documents a way in with such clients: PostgreSQL Flex (for an Aurora DSQL cluster, which has no change stream, this option and the tool of the customer's own are the only ones; the replication of the engine is not offered), MariaDB (the mysql client loads a dump into an empty instance), SQLServer Flex (a .bak file imported with import_database), Key Value Store (the tutorial migrates a Redis instance by the MIGRATE command; for an ElastiCache source, where AWS lists migrate among the commands unavailable for caches running Redis OSS, the copy is a client that iterates the keys with SCAN and copies each with DUMP, PTTL and RESTORE; for a MemoryDB source, where AWS lists migrate, sync, psync, bgsave, save and config among the unavailable commands and the cluster mode is always on, the same client copy runs against every shard primary found with CLUSTER NODES or CLUSTER SLOTS, with TLS where the source has it and an ACL user that reaches every key; whether DUMP, RESTORE and PTTL run on a standard MemoryDB cluster is not stated by AWS, and for a member of a multi-Region cluster, whose page lists PTTL as unsupported, the step says the TTLs are not carried) and OpenSearch (the reindex operation). For a store without a documented way in (MongoDB Flex, a memcached cache) it is not offered and the decision offers the tool of the customer's own alone. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mariadb_credential.md#L51-L57, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mongodbflex_user.md#L59-L63, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/opensearch_credential.md#L51-L57, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/valkey_credential.md#L51-L57, https://docs.stackit.cloud/products/databases/mariadb/how-tos/backup-and-restore/, https://docs.stackit.cloud/products/databases/sqlserver-flex/how-tos/import-database-backup-from-stackit-s3-into-sqlserver-flex/, https://docs.stackit.cloud/products/databases/key-value-store/tutorials/migrate-data-to-a-new-instance/, https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SupportedCommands.html, https://docs.aws.amazon.com/memorydb/latest/devguide/restrictedcommands.html, https://docs.stackit.cloud/products/databases/opensearch/how-tos/migrate-elasticsearch-data-to-an-opensearch2-service-instance/; the words they rest on are quoted in decisions.json)
  • replicate-with-the-engine-replication — Replicate the data with the replication of the source engine until the cutover. A person sets up the replication of the source engine so that the STACKIT instance follows the source while the application keeps writing to the source (for PostgreSQL, logical replication: the schema is copied first with pg_dump --schema-only, a publication on the source and a subscription on the target copy the existing rows and then the changes, and the sequences are copied inside the write freeze because they are not replicated). The source needs a change and a reboot to turn replication on, and the target must be able to reach the source. Inside the write freeze the person waits until the target has caught up, compares both sides and switches the clients, then removes the replication. For a PostgreSQL database the plan holds the steps of this option (the initial copy, the watch of the lag, the freeze, the final copy, the reconcile and the cleanup); for an S3 bucket this option is not available, because S3 Replication copies between Amazon S3 buckets and no STACKIT bucket is documented as a destination (the plan holds the two copy tools instead); for any other engine this option is not offered, because no STACKIT service other than PostgreSQL Flex documents the replication of a source engine into it (MariaDB, Key Value Store, OpenSearch and MongoDB Flex document none, and the SQLServer Flex page on transactional replication describes an on-premises publisher and does not name Amazon RDS as one), so the decision of such a store offers the export and the import with the engine clients where its service documents them, and the tool of the customer's own. (sources: https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html, https://www.postgresql.org/docs/current/logical-replication-restrictions.html, https://www.postgresql.org/docs/current/logical-replication-restrictions.html, https://www.postgresql.org/docs/current/sql-createsubscription.html, https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.html, https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.html; the words they rest on are quoted in decisions.json)
  • migrate-with-a-tool-of-my-own — Move the data with a migration tool or a replication of the owner's own. A person moves the data with a tool or a replication they run (for example a change-data-capture replication that keeps the copy in step until the cutover), writes its steps, the checks before the move, the cutover window and the way back, and carries them out. The STACKIT instance is reached at the host and port its credential states. The plan holds that work as typed steps: the write freeze of the source, the copy as one step whose commands the person writes, and the reconcile that compares both sides; the source stays the way back until the reconcile records GO, which a person checks, since the plan cannot know that the tool leaves the source unchanged. A memcached cache holds a confirmation instead of a copy. A bucket repeated by count or for_each has neither a reconcile nor any other option: its instances and the buckets they move to are not named, so the plan holds the one manual step, which the person writes for each instance after naming them. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mariadb_credential.md#L51-L57; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Name the instance of a repeated resource a reference means open input

1 unit: module.retail_app_ecs.module.alb.aws_lb.this · owner role Platform Architect · required by phase: before the pilot · 1 step rests on it

Options and trade-off
  • set-the-selector-to-one-instance Set the selector variable to the index of the instance the source means: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 3 steps only together with other open decisions
  • reference-another-resource Reference another resource than the candidates: it changes the draft: the draft is generated again with it, and the steps stay held until then; in this run it frees no step
Applications touched
ui (PROPOSED)
Wave
wave 3 · steps in platform services
What an answer frees
No answer frees a step by itself; the answer that frees most frees 3 steps together with other open decisions; 63 of the 66 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds TF/stackit_application_load_balancer.retail_app_ecs_alb_this until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The converter could not prove which instance of a repeated resource the source means (1 converter decision): the draft holds a required variable without a default and assumes no candidate, so the unit that owns one is not automation-eligible until a person decides.
Ways out
  1. Set the selector variable to the index of the instance the source means; effect: The attribute takes one id, so one instance is meant; a person sets the selector variable the draft declares to the index of that instance, and the step is applied as the draft writes it (it needs the variable as an input). No other instance is referenced.
  2. Reference another resource than the candidates; effect: None of the instances of the repeated resource is what the source means; the reference is changed in the draft (to another block, or a block of its own) before the step is applied.; the draft is generated again with it
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Name the instance of a repeated resource a reference means for module.retail_app_ecs.module.alb.aws_lb.this: choose one of the 2 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-CONVERT-AMBIGUOUS-INSTANCE-SELECTION (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
ambiguous instance selection, of the convert part of the draft
The plan’s reasons
  • the reference reaches stackit_network.vpc_vpc_public, a repeated resource (count or for_each), and nothing in the source proves which instance it means; no instance is assumed and the variable has no default
  • which instance of the repeated resource the source means (its index among the candidates the selector variable's description lists)
Affected applications
None named.
Plan decisions
1 alias convert:module.retail_app_ecs.module.alb.aws_lb.this:network_id:AMBIGUOUS_INSTANCE_SELECTION
Options
2, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • set-the-selector-to-one-instance — Set the selector variable to the index of the instance the source means. The attribute takes one id, so one instance is meant; a person sets the selector variable the draft declares to the index of that instance, and the step is applied as the draft writes it (it needs the variable as an input). No other instance is referenced. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L29; the words they rest on are quoted in decisions.json)
  • reference-another-resource — Reference another resource than the candidates. None of the instances of the repeated resource is what the source means; the reference is changed in the draft (to another block, or a block of its own) before the step is applied. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L29; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Decide how a load balancer reaches a workload on SKE open input

1 unit: module.retail_app_ecs.module.alb.aws_lb.this · owner role Network Architect · required by phase: before the pilot · 1 step rests on it

Options and trade-off
  • nodeport-alb-target-pool Keep the draft: a NodePort Service of each workload and the target pool on its node port at the private IPs of the cluster's nodes (the DEFAULT) (recommended): the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 3 steps only together with other open decisions
  • ingress-controller-behind-alb Run an Ingress controller on the cluster and put the load balancer in front of it: a person carries it out: the answer frees only the manual step that does; in this run it frees no step
  • stackit-alb-ingress-controller Use the STACKIT ALB as the Ingress: the SKE Application Load Balancer extension: a person carries it out: the answer frees only the manual step that does; in this run it frees no step
Applications touched
ui (PROPOSED)
Wave
wave 3 · steps in platform services
What an answer frees
No answer frees a step by itself; the answer that frees most frees 3 steps together with other open decisions; 63 of the 66 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds TF/stackit_application_load_balancer.retail_app_ecs_alb_this until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The converter could not prove what the source means by the ingress exposure path (1 converter decision): the draft holds a required variable without a default and assumes no candidate, so the unit that owns one is not automation-eligible until a person decides.
Ways out
  1. Keep the draft: a NodePort Service of each workload and the target pool on its node port at the private IPs of the cluster's nodes; effect: The manifest of each workload writes a Service of type NodePort with the node port the target pool of the drafted Application Load Balancer listens on, and the pool's targets are the private IPs of the nodes of the SKE cluster, which a person sets and keeps current: the nodes change as the node pool scales and is updated, and a node missing from the list receives no traffic. The health check of the pool reaches the pods through the same node port. The draft applies as written once the IPs are set.
  2. Run an Ingress controller on the cluster and put the load balancer in front of it; effect: An Ingress controller (for example ingress-nginx, installed by a Helm release) runs on the SKE cluster and routes the requests by Ingress rules to the ClusterIP Services of the workloads; the load balancer reaches the controller, on the controller's node port at the private IPs of the nodes (the target pool of the draft changed to that port) or through the controller's own Service of type LoadBalancer. The draft writes neither the controller nor the Ingress rules: a person carries it out, and the load balancer's step stays held.
  3. Use the STACKIT ALB as the Ingress: the SKE Application Load Balancer extension; effect: The Application Load Balancer extension of the SKE cluster is enabled (extensions.application_load_balancer.enabled of stackit_ske_cluster; in private preview, only for enabled accounts) and each workload gets an Ingress of an IngressClass of the controller stackit.cloud/alb-ingress over a Service of type NodePort, the only network mode the controller supports; the controller provisions the Application Load Balancer through the STACKIT API, so the stackit_application_load_balancer block of the draft is not applied. The draft writes neither the extension nor the Ingress: a person carries it out, and the load balancer's step stays held.
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Decide how a load balancer reaches a workload on SKE for module.retail_app_ecs.module.alb.aws_lb.this: choose one of the 3 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-CONVERT-INGRESS-EXPOSURE-PATH (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
ingress exposure path, of the convert part of the draft
The plan’s reasons
  • a STACKIT target pool reaches its targets by private IP and the SKE cluster exports no node address to Terraform, so a Kubernetes workload is reachable from the load balancer only through a node port at the IPs of the nodes, which change as the node pool scales and is updated, or through an Ingress controller; the source registered the tasks of the service by their own IPs (awsvpc)
  • for the drafted path: the private IPs of the nodes of the SKE cluster the target pool lists, and who keeps them current as the node pool scales and is updated
  • for an Ingress controller: the controller, how the load balancer reaches it (its node port at the node IPs, or its own Service of type LoadBalancer) and the Ingress rules of each workload
  • for the STACKIT ALB as the Ingress: that the account may enable the Application Load Balancer extension of SKE (private preview), and the IngressClass and Ingress of each workload
Affected applications
None named.
Plan decisions
1 alias convert:module.retail_app_ecs.module.alb.aws_lb.this:target_pools:INGRESS_EXPOSURE_PATH
Options
3, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • nodeport-alb-target-pool — Keep the draft: a NodePort Service of each workload and the target pool on its node port at the private IPs of the cluster's nodes. DEFAULT (change if wrong): the draft carries this option out and the record stays open. Nobody answered it: confirm it with a review that names it, or choose another option. The manifest of each workload writes a Service of type NodePort with the node port the target pool of the drafted Application Load Balancer listens on, and the pool's targets are the private IPs of the nodes of the SKE cluster, which a person sets and keeps current: the nodes change as the node pool scales and is updated, and a node missing from the list receives no traffic. The health check of the pool reaches the pods through the same node port. The draft applies as written once the IPs are set. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L420, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L70-L76, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-alb-controller-waf-extension/060-test-workload.tf#L88; the words they rest on are quoted in decisions.json)
  • ingress-controller-behind-alb — Run an Ingress controller on the cluster and put the load balancer in front of it. An Ingress controller (for example ingress-nginx, installed by a Helm release) runs on the SKE cluster and routes the requests by Ingress rules to the ClusterIP Services of the workloads; the load balancer reaches the controller, on the controller's node port at the private IPs of the nodes (the target pool of the draft changed to that port) or through the controller's own Service of type LoadBalancer. The draft writes neither the controller nor the Ingress rules: a person carries it out, and the load balancer's step stays held. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L420, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-nginx-rate-limit/070-helm.tf#L15-L18; the words they rest on are quoted in decisions.json)
  • stackit-alb-ingress-controller — Use the STACKIT ALB as the Ingress: the SKE Application Load Balancer extension. The Application Load Balancer extension of the SKE cluster is enabled (extensions.application_load_balancer.enabled of stackit_ske_cluster; in private preview, only for enabled accounts) and each workload gets an Ingress of an IngressClass of the controller stackit.cloud/alb-ingress over a Service of type NodePort, the only network mode the controller supports; the controller provisions the Application Load Balancer through the STACKIT API, so the stackit_application_load_balancer block of the draft is not applied. The draft writes neither the extension nor the Ingress: a person carries it out, and the load balancer's step stays held. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L171, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-alb-controller-waf-extension/ARCHITECTURE.md#L5, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-alb-controller-waf-extension/060-test-workload.tf#L25-L33, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-alb-controller-waf-extension/060-test-workload.tf#L88; the words they rest on are quoted in decisions.json)
Recommended option
nodeport-alb-target-pool
Status
Open: not decided yet.
Decide how the segmentation of ECS tasks that become pods is carried open input

5 units: module.retail_app_ecs.module.carts_service.aws_security_group.this, module.retail_app_ecs.module.catalog_service.aws_security_group.this and 3 more · owner role Security Architect · required by phase: before the pilot · 5 steps rest on it

Options and trade-off
  • generate-networkpolicy-from-the-group-rules Carry the segmentation as a Kubernetes NetworkPolicy written from the rules of the source group: a person carries it out: the answer frees only the manual step that does; in this run it frees 20 steps by itself and 11 steps more together with other open decisions
  • security-group-on-the-nodes Carry the segmentation as a STACKIT security group on the nodes (coarser than the source): a person carries it out: the answer frees only the manual step that does; in this run it frees 20 steps by itself and 11 steps more together with other open decisions
  • accept-no-segmentation Accept that the pods run without the segmentation the source group gave the tasks: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 20 steps by itself and 11 steps more together with other open decisions
Applications touched
carts (PROPOSED), checkout (PROPOSED), orders (PROPOSED), ui (PROPOSED)
  • module.retail_app_ecs.module.catalog_service.aws_security_group.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
Wave
wave 2 · steps in security
What an answer frees
The answer that frees most frees 20 steps by itself and 11 steps more together with other open decisions; 65 of the 96 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds MAN/security/attachment-design:module.retail_app_ecs.module.carts_service.aws_security_group.this, MAN/security/attachment-design:module.retail_app_ecs.module.catalog_service.aws_security_group.this, MAN/security/attachment-design:module.retail_app_ecs.module.checkout_service.aws_security_group.this, MAN/security/attachment-design:module.retail_app_ecs.module.orders_service.aws_security_group.this and MAN/security/attachment-design:module.retail_app_ecs.module.ui_service.aws_security_group.this until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The converter could not prove what the source means by the pod segmentation (5 converter decisions): the draft holds a required variable without a default and assumes no candidate, so the unit that owns one is not automation-eligible until a person decides.
Ways out
  1. Carry the segmentation as a Kubernetes NetworkPolicy written from the rules of the source group; effect: A NetworkPolicy per workload admits the traffic the rules of the source group allowed and nothing else, so the segmentation moves from the interface of the task to the pod. The sources read state that SKE applies NetworkPolicy objects (a default-deny policy of its own in kube-system, and a request to add policies for custom workloads) and give no statement about the policy engine in a workload's namespace, which is checked on the cluster. The draft does not write the NetworkPolicy in this build: a person writes it from the rules of the drafted group, and the group stays a record of what the source allowed.
  2. Carry the segmentation as a STACKIT security group on the nodes (coarser than the source); effect: A security group acts on the network interface that lists it, so on a node and on every pod of it, not on one workload: it is coarser than the source group, which acted on the interface of each task. The provider resource of the cluster has no security group attribute, on the cluster or on a node pool, so the draft cannot write it, and whether the interfaces of the nodes can list a group by another route is not stated by the sources read: a person establishes that with STACKIT before choosing it.
  3. Accept that the pods run without the segmentation the source group gave the tasks; effect: The group is created as the draft writes it and is attached to nothing; no policy of the draft restricts the traffic to or from the pods, so what the cluster admits to them is its own default, which the sources read do not state for a workload namespace. The loss of the source's restriction is a difference, recorded as accepted with who accepted it and why, never as equivalent.
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Decide how the segmentation of ECS tasks that become pods is carried for module.retail_app_ecs.module.carts_service.aws_security_group.this, module.retail_app_ecs.module.catalog_service.aws_security_group.this, module.retail_app_ecs.module.checkout_service.aws_security_group.this, module.retail_app_ecs.module.orders_service.aws_security_group.this and 1 more: choose one of the 3 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).

This record holds 5 questions, one per unit. An answer applies only to the members it names (members: in the decisions file; a member is named by the record id, a slash and its unit); an entry that names none answers every member, and that blanket answer is yours to write: the template never writes it.

What each option does to each of the 5 units
  1. module.retail_app_ecs.module.carts_service.aws_security_group.this; what the plan says of it: the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
    • generate-networkpolicy-from-the-group-rules: a manual alternative: a person carries it out for this unit
    • security-group-on-the-nodes: a manual alternative: a person carries it out for this unit
    • accept-no-segmentation: the draft already carries it out for this unit
  2. module.retail_app_ecs.module.catalog_service.aws_security_group.this; what the plan says of it: the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
    • generate-networkpolicy-from-the-group-rules: a manual alternative: a person carries it out for this unit
    • security-group-on-the-nodes: a manual alternative: a person carries it out for this unit
    • accept-no-segmentation: the draft already carries it out for this unit
  3. module.retail_app_ecs.module.checkout_service.aws_security_group.this; what the plan says of it: the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
    • generate-networkpolicy-from-the-group-rules: a manual alternative: a person carries it out for this unit
    • security-group-on-the-nodes: a manual alternative: a person carries it out for this unit
    • accept-no-segmentation: the draft already carries it out for this unit
  4. module.retail_app_ecs.module.orders_service.aws_security_group.this; what the plan says of it: the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
    • generate-networkpolicy-from-the-group-rules: a manual alternative: a person carries it out for this unit
    • security-group-on-the-nodes: a manual alternative: a person carries it out for this unit
    • accept-no-segmentation: the draft already carries it out for this unit
  5. module.retail_app_ecs.module.ui_service.aws_security_group.this; what the plan says of it: the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
    • generate-networkpolicy-from-the-group-rules: a manual alternative: a person carries it out for this unit
    • security-group-on-the-nodes: a manual alternative: a person carries it out for this unit
    • accept-no-segmentation: the draft already carries it out for this unit
Technical details

Record DEC-GEN-CONVERT-POD-SEGMENTATION (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
pod segmentation, of the convert part of the draft
The plan’s reasons
  • the source restricts the traffic to and from the tasks with this group; a STACKIT security group acts on the network interface of a server and cannot restrict a pod, and the draft attaches the group to nothing, so the tasks would run without the segmentation the source had unless a person decides how it is carried (never equivalent without that decision)
  • for each workload the record names: the traffic the source group allowed to and from its tasks (the rules of the drafted group) and which of those rules the target still needs
  • for a NetworkPolicy: that the cluster enforces NetworkPolicy objects in the workload's namespace, and the labels of the pods the policy selects
  • for a security group on the nodes: whether the network interfaces of the nodes of the cluster can list a STACKIT security group at all (the provider resource of the cluster has no attribute for it), and that its rules then act on every pod of a node
Affected applications
None named.
Plan decisions
5
Show the 5 plan decisions
  • DEC-GEN-CONVERT-POD-SEGMENTATION/module.retail_app_ecs.module.carts_service.aws_security_group.this — alias convert:module.retail_app_ecs.module.carts_service.aws_security_group.this:security-group:POD_SEGMENTATION
  • DEC-GEN-CONVERT-POD-SEGMENTATION/module.retail_app_ecs.module.catalog_service.aws_security_group.this — alias convert:module.retail_app_ecs.module.catalog_service.aws_security_group.this:security-group:POD_SEGMENTATION
  • DEC-GEN-CONVERT-POD-SEGMENTATION/module.retail_app_ecs.module.checkout_service.aws_security_group.this — alias convert:module.retail_app_ecs.module.checkout_service.aws_security_group.this:security-group:POD_SEGMENTATION
  • DEC-GEN-CONVERT-POD-SEGMENTATION/module.retail_app_ecs.module.orders_service.aws_security_group.this — alias convert:module.retail_app_ecs.module.orders_service.aws_security_group.this:security-group:POD_SEGMENTATION
  • DEC-GEN-CONVERT-POD-SEGMENTATION/module.retail_app_ecs.module.ui_service.aws_security_group.this — alias convert:module.retail_app_ecs.module.ui_service.aws_security_group.this:security-group:POD_SEGMENTATION
Options
3, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • generate-networkpolicy-from-the-group-rules — Carry the segmentation as a Kubernetes NetworkPolicy written from the rules of the source group. A NetworkPolicy per workload admits the traffic the rules of the source group allowed and nothing else, so the segmentation moves from the interface of the task to the pod. The sources read state that SKE applies NetworkPolicy objects (a default-deny policy of its own in kube-system, and a request to add policies for custom workloads) and give no statement about the policy engine in a workload's namespace, which is checked on the cluster. The draft does not write the NetworkPolicy in this build: a person writes it from the rules of the drafted group, and the group stays a record of what the source allowed. (sources: https://docs.stackit.cloud/products/runtime/kubernetes-engine/release-notes/, https://github.com/stackitcloud/professional-service/blob/main/examples/ske-s3-csi-juicefs/README.md#L59; the words they rest on are quoted in decisions.json)
  • security-group-on-the-nodes — Carry the segmentation as a STACKIT security group on the nodes (coarser than the source). A security group acts on the network interface that lists it, so on a node and on every pod of it, not on one workload: it is coarser than the source group, which acted on the interface of each task. The provider resource of the cluster has no security group attribute, on the cluster or on a node pool, so the draft cannot write it, and whether the interfaces of the nodes can list a group by another route is not stated by the sources read: a person establishes that with STACKIT before choosing it. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L40, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md; the words they rest on are quoted in decisions.json)
  • accept-no-segmentation — Accept that the pods run without the segmentation the source group gave the tasks. The group is created as the draft writes it and is attached to nothing; no policy of the draft restricts the traffic to or from the pods, so what the cluster admits to them is its own default, which the sources read do not state for a workload namespace. The loss of the source's restriction is a difference, recorded as accepted with who accepted it and why, never as equivalent. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L40, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Confirm the plan or machine type StackToIT derived from the size of the source open input

3 units: module.dependencies.aws_mq_broker.mq, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default and 1 more · owner role Platform Architect · required by phase: before the pilot · 3 steps rest on it

Options and trade-off
  • use-the-size-derived-from-the-source Keep the plan or machine type the draft derived from the size of the source (the DEFAULT): the draft already carries it out, so the answer frees the steps that wait for it
  • choose-the-size Set the plan or machine type yourself: it changes the draft: the draft is generated again with it, and the steps stay held until then
Applications touched
checkout (PROPOSED), orders (PROPOSED)
Wave
wave 4 · steps in data services, platform services
Approval
not approved: no decisions file was given with this run
What the draft does
The draft carries the default use-the-size-derived-from-the-source out (answered by DEFAULT: nobody answered the decision), and the decision stays open.
Still open
The target design stands on a default that nobody answered: StackToIT chose it, and a person confirms it or changes it in the decisions file. The draft derives a plan or a machine type from the size the source states and writes it as the default of a variable (3 converter decisions): the steps that read the variable run on that default until a person confirms it or sets another size, and the price on the cost page is the price of the default. The source states the size of its own offer, not the load, so the size is a proposal.
Ways out
  1. Keep the plan or machine type the draft derived from the size of the source; effect: The draft already writes the derived plan, flavor or machine type (as the default of the variable for a plan or a machine type, as the literal of the block for a database flavor), said as DEFAULT on the block: the instance or the pool is created with it and the cost page prices it. Confirming it accepts the proposal as the starting size of the target; it does not say that the size carries the load, which the source does not state, and the disk of a plan is the smallest of that size. The memory was compared in bytes: the API states the memory of a PostgreSQL Flex and a SQL Server Flex flavor in Gibibyte, the unit of the source; the plan tables of Key Value Store and RabbitMQ and the MongoDB Flex flavors state their RAM as GB without defining it, so the draft took the plan or flavor that holds the source's memory when a GB is 10^9 bytes (it then holds it when a GB is 2^30 bytes as well) and says where that made it larger than the reading of a GB as a GiB; a machine type's memory is the catalogue's ram_mb read as MiB, an inference the API does not state. The next run writes the same default.
  2. Set the plan or machine type yourself; effect: The next run leaves the variable a required one the owner sets (a plan or a flavor of the catalogue, or a machine type the SKE API lists); the derived default and its DEFAULT line leave the draft, and the step that reads the variable waits for the value. Where the unit of the target's memory is not stated (the GB of a plan table or of a MongoDB Flex flavor), the person who sets the value reads the table in the unit that holds: a plan whose GB is a GiB can be smaller than the one the draft proposed.; the draft is generated again with it
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Confirm the plan or machine type StackToIT derived from the size of the source for module.dependencies.aws_mq_broker.mq, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default and module.dependencies.module.orders_rds.aws_rds_cluster.this: choose one of the 2 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).

This record holds 3 questions, one per unit. An answer applies only to the members it names (members: in the decisions file; a member is named by the record id, a slash and its unit); an entry that names none answers every member, and that blanket answer is yours to write: the template never writes it.

What each option does to each of the 3 units
  1. module.dependencies.aws_mq_broker.mq; what the plan says of it: the target sizes by a plan of the catalogue, and the source states a size in the terms of its own offer; the draft proposes the smallest plan that covers it, which leaves out what the source does not state (the disk of a plan, the sustained load, the headroom of a pool), so the value is a proposal and the price of the draft moves with it; unit of the memory figure: the plan table gives its RAM as "GB" and does not say whether a GB is 10^9 or 2^30 bytes, so the plan is chosen to hold the source's memory when a GB is 10^9 bytes, which it then also does when a GB is 2^30 bytes (it is never smaller than the source whichever way the table is read)
    • use-the-size-derived-from-the-source: the draft already carries it out for this unit
    • choose-the-size: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
  2. module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; what the plan says of it: the target sizes by a plan of the catalogue, and the source states a size in the terms of its own offer; the draft proposes the smallest plan that covers it, which leaves out what the source does not state (the disk of a plan, the sustained load, the headroom of a pool), so the value is a proposal and the price of the draft moves with it; unit of the memory figure: the plan table gives its RAM as "GB" and does not say whether a GB is 10^9 or 2^30 bytes, so the plan is chosen to hold the source's memory when a GB is 10^9 bytes, which it then also does when a GB is 2^30 bytes (it is never smaller than the source whichever way the table is read)
    • use-the-size-derived-from-the-source: the draft already carries it out for this unit
    • choose-the-size: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
  3. module.dependencies.module.orders_rds.aws_rds_cluster.this; what the plan says of it: the target sizes by a flavor of the catalogue, and the source states a size in the terms of its own offer; the draft proposes the smallest flavor that covers it, which leaves out what the source does not state (the disk of a plan, the sustained load, the headroom of a pool), so the value is a proposal and the price of the draft moves with it; unit of the memory figure: PostgreSQL Flex states the memory of a flavor in Gibibyte (API v3 spec, flavor.memory), the unit of the source's size, so no unit is assumed
    • use-the-size-derived-from-the-source: the draft already carries it out for this unit
    • choose-the-size: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
Technical details

Record DEC-GEN-CONVERT-SIZE-FROM-SOURCE (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
size from source, of the convert part of the draft
The plan’s reasons
  • the target sizes by a flavor of the catalogue, and the source states a size in the terms of its own offer; the draft proposes the smallest flavor that covers it, which leaves out what the source does not state (the disk of a plan, the sustained load, the headroom of a pool), so the value is a proposal and the price of the draft moves with it; unit of the memory figure: PostgreSQL Flex states the memory of a flavor in Gibibyte (API v3 spec, flavor.memory), the unit of the source's size, so no unit is assumed
  • the target sizes by a plan of the catalogue, and the source states a size in the terms of its own offer; the draft proposes the smallest plan that covers it, which leaves out what the source does not state (the disk of a plan, the sustained load, the headroom of a pool), so the value is a proposal and the price of the draft moves with it; unit of the memory figure: the plan table gives its RAM as "GB" and does not say whether a GB is 10^9 or 2^30 bytes, so the plan is chosen to hold the source's memory when a GB is 10^9 bytes, which it then also does when a GB is 2^30 bytes (it is never smaller than the source whichever way the table is read)
  • the load the instance or the pool has to carry on STACKIT: memory in use, connections or messages per second, and the headroom the owner wants (the source states the size of its offer, not the load)
  • for a plan: whether the availability of the source (replicas, automatic failover, a cluster of brokers) is kept, and the disk the data needs (the disk is not a figure of the source)
  • for a pool: the requests of the workloads that run on it, and the minimum and maximum of the pool
Affected applications
None named.
Plan decisions
3
Show the 3 plan decisions
  • DEC-GEN-CONVERT-SIZE-FROM-SOURCE/module.dependencies.aws_mq_broker.mq — alias convert:module.dependencies.aws_mq_broker.mq:dependencies_mq_plan_name:SIZE_FROM_SOURCE
  • DEC-GEN-CONVERT-SIZE-FROM-SOURCE/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default — alias convert:module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default:dependencies_checkout_elasticache_redis_default_plan_name:SIZE_FROM_SOURCE
  • DEC-GEN-CONVERT-SIZE-FROM-SOURCE/module.dependencies.module.orders_rds.aws_rds_cluster.this — alias convert:module.dependencies.module.orders_rds.aws_rds_cluster.this:dependencies_orders_rds_this_flavor_id:SIZE_FROM_SOURCE
Options
2, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • use-the-size-derived-from-the-source — Keep the plan or machine type the draft derived from the size of the source. DEFAULT (change if wrong): the draft carries this option out and the record stays open. The draft already writes the derived plan, flavor or machine type (as the default of the variable for a plan or a machine type, as the literal of the block for a database flavor), said as DEFAULT on the block: the instance or the pool is created with it and the cost page prices it. Confirming it accepts the proposal as the starting size of the target; it does not say that the size carries the load, which the source does not state, and the disk of a plan is the smallest of that size. The memory was compared in bytes: the API states the memory of a PostgreSQL Flex and a SQL Server Flex flavor in Gibibyte, the unit of the source; the plan tables of Key Value Store and RabbitMQ and the MongoDB Flex flavors state their RAM as GB without defining it, so the draft took the plan or flavor that holds the source's memory when a GB is 10^9 bytes (it then holds it when a GB is 2^30 bytes as well) and says where that made it larger than the reading of a GB as a GiB; a machine type's memory is the catalogue's ram_mb read as MiB, an inference the API does not state. The next run writes the same default. (sources: https://docs.stackit.cloud/products/databases/key-value-store/reference/service-plans/, https://docs.stackit.cloud/products/databases/key-value-store/reference/service-plans/, https://docs.stackit.cloud/products/messaging/rabbitmq/reference/service-plans/, https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/ske/v2/ske.json#L2048, https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/postgres-flex/v3/postgres-flex.json#L1408, https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/sqlserverflex/v3/sqlserverflex.json#L1455, https://docs.stackit.cloud/products/databases/mongodb-flex/reference/flavors-and-performance-classes/, https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/iaas/v2/iaas.json#L3660; the words they rest on are quoted in decisions.json)
  • choose-the-size — Set the plan or machine type yourself. The next run leaves the variable a required one the owner sets (a plan or a flavor of the catalogue, or a machine type the SKE API lists); the derived default and its DEFAULT line leave the draft, and the step that reads the variable waits for the value. Where the unit of the target's memory is not stated (the GB of a plan table or of a MongoDB Flex flavor), the person who sets the value reads the table in the unit that holds: a plan whose GB is a GiB can be smaller than the one the draft proposed. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/valkey_instance.md#L36, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/rabbitmq_instance.md#L36, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L84; the words they rest on are quoted in decisions.json)
Recommended option
None.
DEFAULT (change if wrong)
  • use-the-size-derived-from-the-source, answered by DEFAULT: StackToIT carried out the option use-the-size-derived-from-the-source for module.dependencies.aws_mq_broker.mq by default: var.dependencies_mq_plan_name defaults to stackit-rabbitmq-8.16.50-replica (broker instance type mq.m5.large has 2 vCPU and 8 GiB (AWS price list, mq_broker_sizes.json), and the broker is a single instance: the smallest replica (three nodes, high availability) RabbitMQ plan of the eu01 catalogue (2026-10-18) that holds 2 vCPU and 8 GiB (8.59 GB at 10^9 bytes per GB) of memory (the plan table gives its RAM as "GB" and does not say whether a GB is 10^9 or 2^30 bytes, so the plan is chosen to hold the source's memory when a GB is 10^9 bytes, which it then also does when a GB is 2^30 bytes (it is never smaller than the source whichever way the table is read)): 8 vCPU / 16 GB RAM / 50 GB disk per node; the disk is not a figure of the source, so the smallest disk of that size is taken and the disk is open; no single-node plan of that size exists, so this replica plan adds the replicas the source does not have, and their price; this plan is larger than the one the other reading gives: reading the table's GB as a GiB, stackit-rabbitmq-4.8.50-single (4 vCPU / 8 GB RAM / 50 GB disk per node) would hold the source, and the draft is priced on the larger plan; if the table's GB is a GiB, answer choose-the-size and set stackit-rabbitmq-4.8.50-single). To change it, answer this decision in decisions.yaml with choose-the-size (and set the plan in the variable), or reject the proposal: the next run then writes the variable without a default. (knowledge-base evidence, not in this folder)
  • use-the-size-derived-from-the-source, answered by DEFAULT: StackToIT carried out the option use-the-size-derived-from-the-source for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default by default: var.dependencies_checkout_elasticache_redis_default_plan_name defaults to stackit-keyvalue-1.4.10-single (node type cache.t3.micro has 2 vCPU and 0.5 GiB (AWS price list, cache_node_sizes.json), and the source is a single node: the smallest single-node Key Value Store plan of the eu01 catalogue (2026-10-18) that holds 0.5 GiB (0.5369 GB at 10^9 bytes per GB) of memory (the plan table gives its RAM as "GB" and does not say whether a GB is 10^9 or 2^30 bytes, so the plan is chosen to hold the source's memory when a GB is 10^9 bytes, which it then also does when a GB is 2^30 bytes (it is never smaller than the source whichever way the table is read)): 1 vCPU / 4 GB RAM / 10 GB disk per node; the disk is not a figure of the source, so the smallest disk of that size is taken and the disk is open). To change it, answer this decision in decisions.yaml with choose-the-size (and set the plan in the variable), or reject the proposal: the next run then writes the variable without a default. (knowledge-base evidence, not in this folder)
  • use-the-size-derived-from-the-source, answered by DEFAULT: StackToIT carried out the option use-the-size-derived-from-the-source for module.dependencies.module.orders_rds.aws_rds_cluster.this by default: flavor_id = 2.4 (module.dependencies.module.orders_rds.aws_rds_cluster.this (source class db.t3.medium) has 2 vCPU and 4 GiB (AWS price list); 2.4 is the smallest single-node PostgreSQL Flex flavor of the eu01 catalogue (2026-10-18) that covers it: 2 vCPU / 4 GiB). To change it, answer this decision in decisions.yaml with choose-the-size (and set the flavor in the variable), or reject the proposal: the next run then writes flavor_id as var.dependencies_orders_rds_this_flavor_id without a default.
Nobody answered this record: the draft carries the default out and the record stays open. To change it, review the record in the decisions file with another chosen option, or reject the proposal, and run again.
Status
Open: not decided yet.
Decide where the workloads of a drafted network are placed open input

1 unit: module.vpc.module.vpc.aws_subnet.private · owner role Network Architect · required by phase: before the pilot · 1 step rests on it

Options and trade-off
  • one-network-for-the-cluster-and-services Place the cluster and the servers in one STACKIT network, and admit the clients of the managed services by access lists naming its range: a person carries it out: the answer frees only the manual step that does; in this run it frees no step
  • keep-the-networks-and-place-by-tier Keep the drafted networks and place each consumer in the network of its tier: a person carries it out: the answer frees only the manual step that does; in this run it frees no step
  • redesign-the-network-placement Redesign the network placement of the workloads: a person carries it out: the answer frees only the manual step that does; in this run it frees no step
  • accept-the-consumers-outside-the-network Accept that the drafted network holds none of the source's consumers of its subnet: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 1 step by itself
Applications touched
none: no applications file was given and no suggested group holds an affected unit
Wave
not stated: none of its units is a member of a wave (a unit that does not exist, exists only when OpenTofu plans, or is refused for a missing input is in none) · steps in foundation
What an answer frees
The answer that frees most frees 1 step by itself; 2 of the 3 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds TF/stackit_network.vpc_vpc_private until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The converter could not prove what the source means by the workload placement (1 converter decision): the draft holds a required variable without a default and assumes no candidate, so the unit that owns one is not automation-eligible until a person decides.
Ways out
  1. Place the cluster and the servers in one STACKIT network, and admit the clients of the managed services by access lists naming its range; effect: The Kubernetes cluster is deployed into one network (network.id of stackit_ske_cluster names a STACKIT Network Area network; a node pool states no network, so the tasks the source spread over several subnets share it), the servers are placed in it by their network interfaces (network_id of stackit_network_interface), and a managed database or cache is not placed in a network: its access list (acl of stackit_postgresflex_instance and stackit_mongodbflex_instance) names the range of that network. The other drafted networks of the subnets hold none of these consumers. The draft writes the cluster half of this option by default (network = { id = ... } on the drafted stackit_ske_cluster, marked DEFAULT) where the target project is not stated to be outside a Network Area, the draft asks for no such project, the cluster serves workloads of exactly one drafted network, and every other consumer of that network has a decision of its own; where one of these does not hold it writes no network.id and a person carries the cluster half out. The access lists of the managed services are a separate default of the draft and not written by this option: a person (or that default) carries the services half out, and the network's step stays held until the decision is answered where the draft binds nothing.
  2. Keep the drafted networks and place each consumer in the network of its tier; effect: A network is kept per source subnet class and each consumer is placed where STACKIT can place it: a server by its network interface, a load balancer by its networks (networks.network_id of stackit_application_load_balancer), the Kubernetes cluster by network.id in one network (its node pools state no network, so one cluster cannot follow a split of its tasks over several networks), and a managed database or cache by an access list naming the range of its tier's network. The draft does not write this placement: a person carries it out, and the network's step stays held.
  3. Redesign the network placement of the workloads; effect: The architect designs the placement outside the draft (for example the cluster in an existing Network Area network of the target environment, or the workloads on servers in the drafted networks); the drafted network is replaced by that design. The draft carries none of it, and the network's step stays held.
  4. Accept that the drafted network holds none of the source's consumers of its subnet; effect: The network is applied as the draft writes it, and none of the consumers the record names is placed in it: the cluster is created without network.id as drafted (which network then holds its nodes is not stated by the sources read), a load balancer takes the network its variable is set to, and a managed database or cache admits the clients of its access list. The source's placement of these workloads in the subnet is not kept; a person accepts that difference, and whether the network's range is still needed is decided with it.
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Decide where the workloads of a drafted network are placed for module.vpc.module.vpc.aws_subnet.private: choose one of the 4 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-CONVERT-WORKLOAD-PLACEMENT (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
workload placement, of the convert part of the draft
The plan’s reasons
  • the source splits these workloads over subnets, and STACKIT places them differently: an SKE cluster is deployed into one network (network.id) and its node pools state no network, a managed database, cache or broker takes an access list and no network id; no one-to-one placement of the consumers in stackit_network.vpc_vpc_private follows from the source, so the network's step waits for the decision
  • for each source consumer the record names (an ECS service, a cluster, a load balancer, a database, cache or broker): the STACKIT network it is placed in, or the access list that admits its clients, in the layout chosen
  • for a Kubernetes cluster: the STACKIT Network Area network its network.id names, and that the target project can use it; the task-level subnet split of the source has no counterpart in the cluster
  • for a network that holds none of its consumers after the choice: whether its address range is still needed
Affected applications
None named.
Plan decisions
1 alias convert:module.vpc.module.vpc.aws_subnet.private:network:WORKLOAD_PLACEMENT
Options
4, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • one-network-for-the-cluster-and-services — Place the cluster and the servers in one STACKIT network, and admit the clients of the managed services by access lists naming its range. The Kubernetes cluster is deployed into one network (network.id of stackit_ske_cluster names a STACKIT Network Area network; a node pool states no network, so the tasks the source spread over several subnets share it), the servers are placed in it by their network interfaces (network_id of stackit_network_interface), and a managed database or cache is not placed in a network: its access list (acl of stackit_postgresflex_instance and stackit_mongodbflex_instance) names the range of that network. The other drafted networks of the subnets hold none of these consumers. The draft writes the cluster half of this option by default (network = { id = ... } on the drafted stackit_ske_cluster, marked DEFAULT) where the target project is not stated to be outside a Network Area, the draft asks for no such project, the cluster serves workloads of exactly one drafted network, and every other consumer of that network has a decision of its own; where one of these does not hold it writes no network.id and a person carries the cluster half out. The access lists of the managed services are a separate default of the draft and not written by this option: a person (or that default) carries the services half out, and the network's step stays held until the decision is answered where the draft binds nothing. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L242, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L79-L101, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L29, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mongodbflex_instance.md#L44, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/postgresflex_instance.md#L104; the words they rest on are quoted in decisions.json)
  • keep-the-networks-and-place-by-tier — Keep the drafted networks and place each consumer in the network of its tier. A network is kept per source subnet class and each consumer is placed where STACKIT can place it: a server by its network interface, a load balancer by its networks (networks.network_id of stackit_application_load_balancer), the Kubernetes cluster by network.id in one network (its node pools state no network, so one cluster cannot follow a split of its tasks over several networks), and a managed database or cache by an access list naming the range of its tier's network. The draft does not write this placement: a person carries it out, and the network's step stays held. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L242, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L79-L101, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L29, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L397-L398, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mongodbflex_instance.md#L44; the words they rest on are quoted in decisions.json)
  • redesign-the-network-placement — Redesign the network placement of the workloads. The architect designs the placement outside the draft (for example the cluster in an existing Network Area network of the target environment, or the workloads on servers in the drafted networks); the drafted network is replaced by that design. The draft carries none of it, and the network's step stays held. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L242, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network_interface.md#L29; the words they rest on are quoted in decisions.json)
  • accept-the-consumers-outside-the-network — Accept that the drafted network holds none of the source's consumers of its subnet. The network is applied as the draft writes it, and none of the consumers the record names is placed in it: the cluster is created without network.id as drafted (which network then holds its nodes is not stated by the sources read), a load balancer takes the network its variable is set to, and a managed database or cache admits the clients of its access list. The source's placement of these workloads in the subnet is not kept; a person accepts that difference, and whether the network's range is still needed is decided with it. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L67, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L242; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Decide how logs are kept beyond 180 days open input

1 unit: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks · owner role Platform Architect · required by phase: before the cutover · 1 step rests on it

Options and trade-off
  • set-retention-within-the-platform-range Keep the logs for the 180 days of the Logs instance only (the DEFAULT) (recommended): the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees no step
  • archive-longer-retention-elsewhere For the period beyond 180 days, also stream the logs to long-term storage: a person carries it out: the answer frees only the manual step that does; in this run it frees 1 step by itself
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: carts, catalog, checkout, orders, ui
Wave
wave 1 · steps in platform services
What an answer frees
The answer that frees most frees 1 step by itself; 1 of the 2 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds MAN/logs/archive:module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The plan of the draft lists the question "Decide how logs are kept beyond 180 days" as open (1 plan decision): a person decides it, and nothing the plan states about it is carried until it is decided.
Ways out
  1. Keep the logs for the 180 days of the Logs instance only; effect: The Logs instance is applied as the draft writes it, with a retention of 180 days (the API accepts 1 to 180 days and the FAQ states that retention beyond 180 days is not supported). Logs older than 180 days are not kept by it and no archive is configured, so the retention the source keeps beyond 180 days is not carried. No step is added.
  2. For the period beyond 180 days, also stream the logs to long-term storage; effect: The Logs instance keeps at most 180 days and is applied as the draft writes it. The FAQ recommends a cold-storage approach for longer periods: stream the log data in parallel to a long-term storage such as a separate Object Storage bucket. The plan holds a step for it that a person carries out (the archive store, the stream and the retention of the archive are not generated); choosing this option takes that step. A requirement of more than 180 days inside STACKIT Logs with no external archive cannot be met by STACKIT Logs alone: it is stated by rejecting this option.
What closes it
An answer whose effect frees the steps that wait for it: an acknowledgement of the current draft in the decisions file given with --decisions (decisions-template.yaml), or the inputs answer (or the change of the source) that makes the draft carry another option.
Next action
Decide how logs are kept beyond 180 days for module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks: choose one of the 2 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-STACKITLOGS-RETENTION-OVER-180-DAYS (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
retention_over_180_days, of the stackitlogs part of the draft
The plan’s reasons
  • the source keeps its logs for ever and a STACKIT Logs instance keeps at most 180 days, so the instance drafted for it (stackit_logs_instance.logs_retention_180d) holds only the last 180 days; logs older than that exist only if a person configures an archive beside it. Choose the archive if the workload needs them; reject it if the requirement is that more than 180 days stay inside STACKIT Logs with no external archive, which STACKIT Logs alone cannot meet
  • the retention period, in days, the workload's logs need, and whether an archive outside STACKIT Logs is accepted for the period beyond 180 days
Affected applications
None named.
Plan decisions
1 alias stackitlogs:module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks:retention_over_180_days
Options
2, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • set-retention-within-the-platform-range — Keep the logs for the 180 days of the Logs instance only. DEFAULT (change if wrong): the draft carries this option out and the record stays open. Nobody answered it: confirm it with a review that names it, or choose another option. The Logs instance is applied as the draft writes it, with a retention of 180 days (the API accepts 1 to 180 days and the FAQ states that retention beyond 180 days is not supported). Logs older than 180 days are not kept by it and no archive is configured, so the retention the source keeps beyond 180 days is not carried. No step is added. (sources: https://github.com/stackitcloud/stackit-api-specifications/blob/main/services/logs/v1/logs.json#L164-L169, https://docs.stackit.cloud/products/logging-and-monitoring/logs/faq/; the words they rest on are quoted in decisions.json)
  • archive-longer-retention-elsewhere — For the period beyond 180 days, also stream the logs to long-term storage. The Logs instance keeps at most 180 days and is applied as the draft writes it. The FAQ recommends a cold-storage approach for longer periods: stream the log data in parallel to a long-term storage such as a separate Object Storage bucket. The plan holds a step for it that a person carries out (the archive store, the stream and the retention of the archive are not generated); choosing this option takes that step. A requirement of more than 180 days inside STACKIT Logs with no external archive cannot be met by STACKIT Logs alone: it is stated by rejecting this option. (sources: https://docs.stackit.cloud/products/logging-and-monitoring/logs/faq/; the words they rest on are quoted in decisions.json)
Recommended option
set-retention-within-the-platform-range
Status
Open: not decided yet.
Decide the outbound address of the servers an allow-list names open input

1 unit: module.vpc.module.vpc.aws_route_table.private · owner role Network Architect · required by phase: before the pilot · 1 step rests on it

Options and trade-off
  • accept-the-platform-egress-address Accept the address STACKIT assigns to the network for outbound traffic: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 1 step by itself
  • reserve-a-public-ip-per-server Give each server that an allow-list names a STACKIT public IP: it changes the draft: the draft is generated again with it, and the steps stay held until then; in this run it frees no step
Applications touched
none: no applications file was given and no suggested group holds an affected unit
Wave
not stated: none of its units is a member of a wave (a unit that does not exist, exists only when OpenTofu plans, or is refused for a missing input is in none) · steps in prepare
What an answer frees
The answer that frees most frees 1 step by itself; 7 of the 8 steps it holds stay held whatever is decided (the plan does not let them run).
Approval
not approved: no decisions file was given with this run
What the draft does
The draft holds DEC/routing/DEC-NET-STACKITROUTE-NAT-FIXED-EGRESS-ADDRESS-LOST until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The plan of the draft lists the question "Decide the outbound address of the servers an allow-list names" as open (1 plan decision): a person decides it, and nothing the plan states about it is carried until it is decided.
Ways out
  1. Accept the address STACKIT assigns to the network for outbound traffic; effect: Outbound traffic of servers without a public IP leaves through source NAT with the public IP STACKIT creates and assigns to the project's Virtual Networks, not with an address the owner chose. A destination allow-list that names the source's fixed NAT address does not match it.
  2. Give each server that an allow-list names a STACKIT public IP; effect: A stackit_public_ip is reserved and associated with the network interface of each such server (network_interface_id of stackit_public_ip, or stackit_public_ip_associate). The pages read do not state which source address the outbound connections of such a server then use; confirm it on the target before relying on it.; the draft is generated again with it
What closes it
The decision DEC-NET-STACKITROUTE-NAT-FIXED-EGRESS-ADDRESS-LOST is answered (accepted or rejected, with its evidence) in the inputs of the run and is no longer open when the run is repeated.
Next action
Decide the outbound address of the servers an allow-list names for module.vpc.module.vpc.aws_route_table.private: choose one of the 2 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-STACKITROUTE-NAT-FIXED-EGRESS-ADDRESS-LOST (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
nat fixed egress address lost, of the stackitroute part of the draft
The plan’s reasons
  • a NAT gateway's fixed egress address is lost on STACKIT: the address a routed network leaves by is the network's own, shared by every routed network of the project, not fixed and not settable
  • the servers whose outbound address a destination allow-list names, and the allow-lists that name it
Affected applications
None named.
Plan decisions
1 alias stackitroute:module.vpc.module.vpc.aws_route_table.private:NAT_FIXED_EGRESS_ADDRESS_LOST
Options
2, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • accept-the-platform-egress-address — Accept the address STACKIT assigns to the network for outbound traffic. Outbound traffic of servers without a public IP leaves through source NAT with the public IP STACKIT creates and assigns to the project's Virtual Networks, not with an address the owner chose. A destination allow-list that names the source's fixed NAT address does not match it. (sources: https://docs.stackit.cloud/products/network/core-networking/virtual-network/basics/concepts/; the words they rest on are quoted in decisions.json)
  • reserve-a-public-ip-per-server — Give each server that an allow-list names a STACKIT public IP. A stackit_public_ip is reserved and associated with the network interface of each such server (network_interface_id of stackit_public_ip, or stackit_public_ip_associate). The pages read do not state which source address the outbound connections of such a server then use; confirm it on the target before relying on it. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.116.0/docs/resources/public_ip.md#L35, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.116.0/docs/resources/public_ip_associate.md#L13; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.

Network Security

1 record: 1 open input
Decide how the clients reach an endpoint the draft exposes more widely open input

5 units: module.dependencies.aws_mq_broker.mq, module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this and 3 more · owner role Security Architect · required by phase: before the pilot · 6 steps rest on it

Options and trade-off
  • accept-the-public-endpoint Accept the public endpoint, limited by its access list (the DEFAULT): A public endpoint needs a security approval (Security Architect) and its own access list; the draft already carries it out, so the answer frees the steps that wait for it
  • use-the-network-area-only-scope Use the network-area-only scope (SNA) instead of the public endpoint (Private Preview, on request): it changes the draft: the draft is generated again with it, and the steps stay held until then
  • redesign-the-endpoint Redesign how the clients reach the endpoint (no private option offered or not usable): a person carries it out: the answer frees only the manual step that does
Applications touched
catalog (PROPOSED), checkout (PROPOSED), orders (PROPOSED)
  • module.dependencies.module.catalog_rds.aws_rds_cluster.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
Wave
wave 4 · steps in data services, platform services
Approval
not approved: no decisions file was given with this run
What the draft does
The draft does not carry the setting on module.dependencies.aws_mq_broker.mq. The draft carries the default accept-the-public-endpoint out (answered by DEFAULT: nobody answered the decision), and the decision stays open. The database, cache, search domain, message broker or Kubernetes API is written with its public endpoint and its access list. The step that creates the endpoint waits for this decision.
Still open
That only the clients the source admitted reach the endpoint on the target. The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The broker is either reachable from the public internet or only from private networks.
Ways out
  1. Accept the public endpoint, limited by its access list; needs the client networks that must reach the endpoint, in its access list, the owner's statement that the wider exposure is accepted; effect: The draft is applied as written and the wider exposure is an accepted difference.; risk: Every address the access list admits reaches the endpoint over the internet.
  2. Use the network-area-only scope instead of the public endpoint (Private Preview, on request); needs a STACKIT account enabled for the private preview, and the clients inside the Network Area, for the Kubernetes control plane: the owner's acceptance that the private control plane is not recommended for production and cannot carry the ACL extension, the draft regenerated or changed with the scope before the step is applied; effect: The database or the Kubernetes API is reachable only inside the Network Area. MariaDB, the Key Value Store, OpenSearch and RabbitMQ take no such scope: for them this path is a redesign.; risk: A request of an account that is not enabled is rejected, and the scope of the Kubernetes control plane cannot be changed later. A private preview is not for production: the documentation says it is subject to breaking changes without prior notice.; the draft is generated again with it
  3. Redesign how the clients reach the endpoint; needs a design of the access that neither widens the exposure to an access list nor depends on a private preview the owner has not accepted; effect: A person designs and carries out the access; the drafted step stays held until the design is recorded. Where the service offers no network-area-only scope (MariaDB, Key Value Store, OpenSearch, RabbitMQ, Redis, the Application Load Balancer) this is the only way to a private endpoint.; risk: A redesign needs its own proof; the draft does not carry it.; the draft is generated again with it
What closes it
The knowledge base states no closing condition for a decision of the plan; it is done when an answer in the decisions file accepts the public endpoint with its access list, or when the regenerated draft carries the network-area-only scope or the redesign and the step that creates the endpoint is free. A person sets which networks may reach the STACKIT RabbitMQ instance with its access list (a list of CIDR networks); the draft sets none. Verification: a connection from an address outside the access list is refused by the target endpoint, and one from a client the source admitted is served; the decision is recorded with who decided, its scope and its reason.
Next action
Decide how the clients reach an endpoint the draft exposes more widely for module.dependencies.aws_mq_broker.mq, module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default and 1 more: choose one of the 3 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).

This record holds 5 questions, one per unit. An answer applies only to the members it names (members: in the decisions file; a member is named by the record id, a slash and its unit); an entry that names none answers every member, and that blanket answer is yours to write: the template never writes it. A public endpoint needs a security approval (Security Architect) and its own access list for each unit it names, not for the record as a whole.

What each option does to each of the 5 units
  1. module.dependencies.aws_mq_broker.mq; what the plan says of it: the source module.dependencies.aws_mq_broker.mq is private (the broker states publicly_accessible = false: it is reached from inside the VPC that hosts its subnets) and the STACKIT RabbitMQ instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has the empty list as its default, which the block replaces by the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods)); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
    • accept-the-public-endpoint: this unit becomes reachable at a public endpoint, limited only by the access list it is given; this needs a security approval for this unit (Security Architect)
    • use-the-network-area-only-scope: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
    • redesign-the-endpoint: a manual alternative: a person carries it out for this unit
  2. module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this; what the plan says of it: the source module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this is private (the domain states vpc_options: it is reached from inside its VPC) and the STACKIT OpenSearch instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has the empty list as its default, which the block replaces by the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods)); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
    • accept-the-public-endpoint: this unit becomes reachable at a public endpoint, limited only by the access list it is given; this needs a security approval for this unit (Security Architect)
    • use-the-network-area-only-scope: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
    • redesign-the-endpoint: a manual alternative: a person carries it out for this unit
  3. module.dependencies.module.catalog_rds.aws_rds_cluster.this; what the plan says of it: the exposure of the source module.dependencies.module.catalog_rds.aws_rds_cluster.this is not readable (it states no publicly_accessible setting, or one that a variable without a value or a default decides), so the source is not proven publicly accessible and the draft does not take it as public; the STACKIT instance has its own IPv4 endpoint outside the project network, limited by its access list, which is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods) by default, so the exposure is a decision and not a preserved property
    • accept-the-public-endpoint: this unit becomes reachable at a public endpoint, limited only by the access list it is given; this needs a security approval for this unit (Security Architect)
    • use-the-network-area-only-scope: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
    • redesign-the-endpoint: a manual alternative: a person carries it out for this unit
  4. module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; what the plan says of it: the source module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default is private (Amazon ElastiCache has no public endpoint: the cache is reached from inside its VPC through its subnet group) and the STACKIT Valkey instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has no default and rejects an empty list, so the list is yours); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
    • accept-the-public-endpoint: this unit becomes reachable at a public endpoint, limited only by the access list it is given; this needs a security approval for this unit (Security Architect)
    • use-the-network-area-only-scope: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
    • redesign-the-endpoint: a manual alternative: a person carries it out for this unit
  5. module.dependencies.module.orders_rds.aws_rds_cluster.this; what the plan says of it: the exposure of the source module.dependencies.module.orders_rds.aws_rds_cluster.this is not readable (it states no publicly_accessible setting, or one that a variable without a value or a default decides), so the source is not proven publicly accessible and the draft does not take it as public; the STACKIT instance has its own IPv4 endpoint outside the project network, limited by its access list, which is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods) by default, so the exposure is a decision and not a preserved property
    • accept-the-public-endpoint: this unit becomes reachable at a public endpoint, limited only by the access list it is given; this needs a security approval for this unit (Security Architect)
    • use-the-network-area-only-scope: changes the draft for this unit where its service offers it (the option text says which do not); the draft is generated again with it
    • redesign-the-endpoint: a manual alternative: a person carries it out for this unit
Technical details

Record DEC-GEN-CONVERT-EXPOSURE-WIDENED (plan decision) · action: a choice between evidenced paths · decisions.json

Decision
exposure widened, of the convert part of the draft
The plan’s reasons
  • the exposure of the source module.dependencies.module.catalog_rds.aws_rds_cluster.this is not readable (it states no publicly_accessible setting, or one that a variable without a value or a default decides), so the source is not proven publicly accessible and the draft does not take it as public; the STACKIT instance has its own IPv4 endpoint outside the project network, limited by its access list, which is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods) by default, so the exposure is a decision and not a preserved property
  • the exposure of the source module.dependencies.module.orders_rds.aws_rds_cluster.this is not readable (it states no publicly_accessible setting, or one that a variable without a value or a default decides), so the source is not proven publicly accessible and the draft does not take it as public; the STACKIT instance has its own IPv4 endpoint outside the project network, limited by its access list, which is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods) by default, so the exposure is a decision and not a preserved property
  • the source module.dependencies.aws_mq_broker.mq is private (the broker states publicly_accessible = false: it is reached from inside the VPC that hosts its subnets) and the STACKIT RabbitMQ instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has the empty list as its default, which the block replaces by the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods)); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
  • the source module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this is private (the domain states vpc_options: it is reached from inside its VPC) and the STACKIT OpenSearch instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has the empty list as its default, which the block replaces by the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods)); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
  • the source module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default is private (Amazon ElastiCache has no public endpoint: the cache is reached from inside its VPC through its subnet group) and the STACKIT Valkey instance has its own endpoint outside the project network, limited only by parameters.sgw_acl; a list the plan does not give is replaced by STACKIT's default ACL, which admits every STACKIT customer's addresses (the draft's variable has no default and rejects an empty list, so the list is yours); the endpoint is wider than the source's and the difference is an accepted change in exposure, not a preserved property
  • whether the clients of the source endpoint can reach a public address limited by an access list, or need the endpoint inside the network (and, for the network-area-only scope, that the STACKIT account is enabled for the private preview)
  • for an Application Load Balancer: the client ranges the source security groups admit on each listener port, and the addresses of the clients they name by a group reference or a prefix list
Affected applications
None named.
Plan decisions
6
Show the 6 plan decisions
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.aws_mq_broker.mq — alias convert:module.dependencies.aws_mq_broker.mq:exposure:EXPOSURE_WIDENED
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this — alias convert:module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this:exposure:EXPOSURE_WIDENED
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.module.catalog_rds.aws_rds_cluster.this — alias convert:module.dependencies.module.catalog_rds.aws_rds_cluster.this:exposure:EXPOSURE_WIDENED
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default — alias convert:module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default:exposure:EXPOSURE_WIDENED
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.module.orders_rds.aws_rds_cluster.this — alias convert:module.dependencies.module.orders_rds.aws_rds_cluster.this:exposure:EXPOSURE_WIDENED
  • DEC-GEN-CONVERT-EXPOSURE-WIDENED/module.dependencies.aws_mq_broker.mq — alias module.dependencies.aws_mq_broker.mq|network-exposure
Options
3, from the knowledge base (decision-kinds.yaml, knowledge-base evidence, not in this folder). They are information: choosing one in the decisions file changes no plan, no draft and no class, confidence or eligibility.
  • accept-the-public-endpoint — Accept the public endpoint, limited by its access list. DEFAULT (change if wrong): the draft carries this option out and the record stays open. The endpoint the draft writes is applied as written: the instance (or the Kubernetes API) is reached at its public address, and only the IP networks of its access list may connect (acl of stackit_postgresflex_instance and stackit_sqlserverflex_instance, sgw_acl of stackit_mariadb_instance, extensions.acl.allowed_cidrs of stackit_ske_cluster; parameters.sgw_acl of stackit_valkey_instance (Key Value Store), stackit_opensearch_instance, stackit_rabbitmq_instance and stackit_redis_instance, a comma-separated list of IP networks in CIDR notation, left to the default when the draft states none). The exposure is wider than the source's and the difference is accepted. Maturity: for stackit_ske_cluster this is the ACL-restricted public control plane: GA, not the source's private endpoint (the ACL how-to, last updated Aug 19, 2026, carries no Private Preview or beta notice, and says ACLs only control access to the API of the public control plane); the provider documents acl and sgw_acl of the data services without a preview notice. For an Application Load Balancer: it is created with the access control the draft writes, options.access_control.allowed_source_ranges, one set of source ranges for the whole load balancer (or none, where the draft can prove no range), so it admits more clients than the source's security groups; the restriction the set cannot express is the client-access manual step of the plan behind this decision, which follows the load balancer. The draft carries this option out BY DEFAULT for the Kubernetes API of a cluster whose source endpoint is private (stackit_ske_cluster, extensions.acl): of the three options it is the only one that is production grade (the ACL-restricted public control plane is GA, the network-area-only control plane is a Private Preview on request, not recommended for production, and cannot be combined with the ACL extension) and it is fail-closed, because only the CIDRs of the access list may connect. The decision stays OPEN with this option marked DEFAULT; the access list stays a required variable with no default (no CIDR is invented, and neither the cluster's own egress addresses nor a STACKIT range is a fallback, because the source's private clients are the admin and CI networks only the customer knows) that refuses an empty list, so the step of the cluster waits for the networks the person lists and not for the decision. The draft carries it out by default for a managed data service (stackit_postgresflex_instance, stackit_sqlserverflex_instance, stackit_mariadb_instance, stackit_mongodbflex_instance, stackit_valkey_instance, stackit_opensearch_instance, stackit_rabbitmq_instance, stackit_redis_instance) as well, on the same grounds and only when all of these hold: the decision is open and no review declines it; the access list the block writes (acl, sgw_acl) is one variable the draft wrote, of type list(string), with no default, that refuses an empty list, an empty entry and null; and the draft could not derive the clients' addresses (where every client is a drafted cluster or a drafted server with a public address the access list already has those addresses as its default, and the decision stands on that default). Of the options, accept-the-public-endpoint is the only one that is generally available for every data service (the network-area-only scope is a Private Preview for enabled accounts and exists for PostgreSQL Flex and SQL Server Flex only), and with a required, non-empty list it is fail-closed: only the CIDRs the person lists may connect. No CIDR is invented, and STACKIT's documented service ranges are no fallback. The default applies to a source that is private and to one whose exposure cannot be read, because the draft writes the same fail-closed endpoint for both. The access-scope variable of PostgreSQL Flex and SQL Server Flex keeps no default, and the critical network exposure of the unit stays open for the assurance until a review that chooses this option also states an exposure_acceptance (its statement and scope), which records the public endpoint as an accepted design change naming the reviewer, never as an equivalent. A review that names another option for the record, or rejects the proposal, declines the default. A cluster whose source endpoint is public gets no decision: its public_access_cidrs are the access list. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/postgresflex_instance.md#L105, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/sqlserverflex_instance.md#L93, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mariadb_instance.md#L64, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L162, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/valkey_instance.md#L79, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/opensearch_instance.md#L68, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/rabbitmq_instance.md#L70, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/redis_instance.md#L82, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L469, https://docs.stackit.cloud/products/runtime/kubernetes-engine/how-tos/configure-access-control-for-your-cluster/, https://docs.stackit.cloud/products/runtime/kubernetes-engine/how-tos/enable-private-clusters/; the words they rest on are quoted in decisions.json)
  • use-the-network-area-only-scope — Use the network-area-only scope (SNA) instead of the public endpoint (Private Preview, on request). Maturity by target. stackit_ske_cluster: SNA private control plane: Private Preview, on request, not for production, no ACL extension (private preview; the documentation says the feature is available only upon request, is under active development, subject to breaking changes without prior notice, and not recommended for production use, and that a private cluster and the ACL extension are mutually exclusive: the GA way to restrict the Kubernetes API is the ACL-restricted public control plane, which is not the source's private endpoint). stackit_postgresflex_instance and stackit_sqlserverflex_instance: private preview (the provider documents access_scope as a private preview for enabled accounts). stackit_mariadb_instance, stackit_valkey_instance, stackit_opensearch_instance, stackit_rabbitmq_instance, stackit_redis_instance and stackit_application_load_balancer: not offered (no access scope; the redesign option applies). What the option means: The endpoint is reachable only inside a STACKIT Network Area: access_scope = SNA of stackit_postgresflex_instance and stackit_sqlserverflex_instance, network.control_plane.access_scope = SNA of stackit_ske_cluster (immutable). The scope is a private preview, permitted for enabled accounts only (a request of another account is rejected). The draft does not write it, so the draft is regenerated (or changed) with the scope before the step is applied. The pinned provider documents no access scope for stackit_mariadb_instance: there it is a redesign. Neither does it for stackit_valkey_instance (Key Value Store), stackit_opensearch_instance, stackit_rabbitmq_instance or stackit_redis_instance, whose access is set by parameters.sgw_acl only (the pinned STACKIT provider schema): for a private cache, search domain or broker there is no network-area-only option: the way out is a redesign, so the draft is changed before the step is applied. Neither does it for stackit_application_load_balancer, whose options are access_control, ephemeral_address, observability and private_network_only (accessible only via a private network address, not changeable after creation): there the way out is a redesign (a private load balancer, or the restriction in front of it), so the draft is regenerated or changed before the step is applied. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/postgresflex_instance.md#L104, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/sqlserverflex_instance.md#L92, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/ske_cluster.md#L249, https://docs.stackit.cloud/products/runtime/kubernetes-engine/how-tos/enable-private-clusters/, https://docs.stackit.cloud/products/runtime/kubernetes-engine/basics/networking/, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/mariadb_instance.md, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L469, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/valkey_instance.md, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/opensearch_instance.md, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/rabbitmq_instance.md, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/redis_instance.md, https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/application_load_balancer.md#L472; the words they rest on are quoted in decisions.json)
  • redesign-the-endpoint — Redesign how the clients reach the endpoint (no private option offered or not usable). Neither the GA option (a public endpoint limited by an access list, wider than the source's) nor the Private Preview option (SNA: on request, not for production, and for stackit_ske_cluster not together with the ACL extension) is taken: a person designs how the clients reach the endpoint and carries it out, and the drafted step stays held until the design is recorded. Not offered: stackit_mariadb_instance, stackit_valkey_instance, stackit_opensearch_instance, stackit_rabbitmq_instance, stackit_redis_instance and stackit_application_load_balancer offer no network-area-only scope, so a redesign is the only way to a private endpoint there. For the Kubernetes API of stackit_ske_cluster the documentation names the source addresses an ACL has to allow (corporate NAT gateways, VPN egress addresses, bastion hosts, CI/CD pipeline egress addresses); a private cluster is a design only after STACKIT enabled the Private Preview for the project and the owner has accepted its maturity and the loss of the ACL extension. (sources: https://docs.stackit.cloud/products/runtime/kubernetes-engine/how-tos/configure-access-control-for-your-cluster/, https://docs.stackit.cloud/products/runtime/kubernetes-engine/how-tos/enable-private-clusters/; the words they rest on are quoted in decisions.json)
Recommended option
None.
DEFAULT (change if wrong)
  • accept-the-public-endpoint, answered by DEFAULT: StackToIT carried out the option accept-the-public-endpoint for stackit_rabbitmq_instance.dependencies_mq by default: the RabbitMQ instance keeps its own STACKIT endpoint and its access list is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods), the clients the source's security group(s) module.retail_app_ecs.module.orders_service.aws_security_group.this admit; no other address is admitted. To change it, give another list in var.dependencies_mq_allowed_cidrs, or answer this decision in decisions.yaml with redesign-the-endpoint (or reject the proposal): the next run then writes no default.
  • accept-the-public-endpoint, answered by DEFAULT: StackToIT carried out the option accept-the-public-endpoint for stackit_opensearch_instance.dependencies_catalog_opensearch_this by default: the OpenSearch instance keeps its own STACKIT endpoint and its access list is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods), the clients the source's security group(s) module.retail_app_ecs.module.catalog_service.aws_security_group.this admit; no other address is admitted. To change it, give another list in var.dependencies_catalog_opensearch_this_allowed_cidrs, or answer this decision in decisions.yaml with redesign-the-endpoint (or reject the proposal): the next run then writes no default.
  • accept-the-public-endpoint, answered by DEFAULT: StackToIT carried out the option accept-the-public-endpoint for stackit_mariadb_instance.dependencies_catalog_rds_this by default: the MariaDB instance keeps its own STACKIT endpoint and its access list is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods), the clients the source's security group(s) module.retail_app_ecs.module.catalog_service.aws_security_group.this admit; no other address is admitted. To change it, give another list in var.dependencies_catalog_rds_this_allowed_cidrs, or answer this decision in decisions.yaml with redesign-the-endpoint (or reject the proposal): the next run then writes no default.
  • accept-the-public-endpoint, answered by DEFAULT: StackToIT carried out the option accept-the-public-endpoint for stackit_valkey_instance.dependencies_checkout_elasticache_redis_default by default: the Valkey instance keeps its own public STACKIT endpoint, and only the CIDRs of var.dependencies_checkout_elasticache_redis_default_allowed_cidrs may connect; the clients of the source could not be mapped to addresses, no CIDR is invented, so the variable has no default and the step waits for the networks you list. The draft writes no default list of the clients' addresses: the rule module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group_rule.keyed["in#in#sg#0"] is no plain allow of a complete list of clients. Name the networks the clients connect from. To change it, answer this decision in decisions.yaml with redesign-the-endpoint (or reject the proposal): the next run then writes no default.
  • accept-the-public-endpoint, answered by DEFAULT: StackToIT carried out the option accept-the-public-endpoint for stackit_postgresflex_instance.dependencies_orders_rds_this by default: the PostgreSQL Flex instance keeps its own STACKIT endpoint and its access list is the egress addresses of stackit_ske_cluster.retail_app_ecs_cluster (its pods), the clients the source's security group(s) module.retail_app_ecs.module.orders_service.aws_security_group.this admit; no other address is admitted. To change it, give another list in var.dependencies_orders_rds_this_allowed_cidrs, or answer this decision in decisions.yaml with use-the-network-area-only-scope or redesign-the-endpoint (or reject the proposal): the next run then writes no default.
Nobody answered this record: the draft carries the default out and the record stays open. To change it, review the record in the decisions file with another chosen option, or reject the proposal, and run again.
Status
Open: not decided yet.

These wait for an input or a confirmation; there is no option to choose.

Other decisions (no work package stated)

38 records: 38 open input
Review the critical settings of a DynamoDB table (Data Architect) open input

1 unit: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this · owner role Data Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: carts, checkout
Wave
wave 1 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the key schema setting: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/open-settings-data-architect). In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead. Review the point in time recovery setting: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/open-settings-data-architect). Review the TTL setting: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/open-settings-data-architect).
Still open
Review the key schema setting: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the point in time recovery setting: the target behaviour of this setting is not established Review the TTL setting: the target behaviour of this setting is not established. Review the key schema setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The draft names the partition/sort key as the collection's unique index; the data model is rewritten by people. Review the point in time recovery setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. MongoDB Flex has a point-in-time window in hours (options.point_in_time_window_hours); its maximum is not documented in the provider schema. The draft carries no value for it. Review the TTL setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. DynamoDB TTL reads epoch seconds; a MongoDB TTL index expires only BSON dates, so the attribute changes type. The time-to-live check still fires only for enabled = true; the case handler REVIEW covers the other states.
Ways out
  1. Review the key schema setting: Take the decision the knowledge base's note names and carry it out (alternatives: not stated in the knowledge base); needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person takes the decision the closing condition names and carries it out; where it changes what the draft writes, the draft is regenerated or changed by hand.; regeneration: not stated — treated as required; risk: The knowledge base states no evidenced alternatives to choose from; a decision taken without the source context the note names can change what the workload reaches, stores or exposes.; the draft is generated again with it
What closes it
Review the key schema setting: A person designs the keys and indexes of the replacement collection (partition and sort key, attribute names and types, secondary index keys), because the draft names only the key as the collection's unique index. Review the point in time recovery setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the TTL setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Verification: Review the key schema setting: the decision or the manual work is done and recorded (who, when, what was configured and why).
Next action
Review the point in time recovery setting: Review the point in time recovery setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-DATA-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.dynamodb_table contract
Affected applications
None named.
Open critical semantics (unit|semantic)
3
Show the 3 open critical semantics
  • alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|key-schema
  • alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|point-in-time-recovery
  • alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|ttl
Options
None listed.
Settings
3 critical settings of the unit, each with its own reason, state and options:
  1. Review the key schema setting (key-schema): Open: no decision of the record has been taken. The knowledge base cannot decide "key-schema" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this outside the draft; the plan states no title for it.
  2. Review the point in time recovery setting (point-in-time-recovery): Open: no decision of the record has been taken. The knowledge base cannot decide "point-in-time-recovery" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the point in time recovery setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the TTL setting (ttl): Open: no decision of the record has been taken. The knowledge base cannot decide "ttl" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the TTL setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a DynamoDB table (Platform Architect) open input

1 unit: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: carts, checkout
Wave
wave 1 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the index projection and name setting: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/open-settings-platform-architect). Confirm the name of the DynamoDB table: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/open-settings-platform-architect). In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead.
Still open
Review the index projection and name setting: the target behaviour of this setting is not established Confirm the name of the DynamoDB table: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the index projection and name setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The projection of a secondary index (keys only, INCLUDE with its non_key_attributes, ALL) decides which attributes an index query can return, and the index name is what every Query / Scan on the index selects it by (API Query IndexName). STACKIT has no provider resource for an index (pinned provider), a person re-creates the indexes and the queries that name them in the chosen engine — REVIEW. Confirm the name of the DynamoDB table: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_dynamodb_table.name: Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract). No semantic of this family has verified it as carried.
Ways out
  1. Confirm the name of the DynamoDB table: Verify what the knowledge base's note asks to confirm; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person checks the setting on the STACKIT target (or against the source, the clients and the tooling that depend on it) and records the result; nothing in the draft changes.; regeneration: not stated — treated as required; risk: A setting confirmed from the draft alone, without the check, can still differ at runtime.; the draft is generated again with it
What closes it
Review the index projection and name setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the name of the DynamoDB table: A person confirms the name the replacement collection carries on the target against what refers to the source name, or accepts the new name. Verification: Confirm the name of the DynamoDB table: the check, proof or closing evidence is recorded with its result.
Next action
Review the index projection and name setting: Review the index projection and name setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.dynamodb_table contract
Affected applications
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|index-projection-and-name
  • alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|tc-dynamodb-table-name
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the index projection and name setting (index-projection-and-name): Open: no decision of the record has been taken. The knowledge base cannot decide "index-projection-and-name" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the index projection and name setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the name of the DynamoDB table (tc-dynamodb-table-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the DynamoDB table" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this: the check, proof or closing evidence is recorded with its result.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a DynamoDB table (Security Architect) open input

1 unit: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: carts, checkout
Wave
wave 1 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the encryption at rest setting: The draft does not carry the setting on module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this; a manual step stands for it (MAN/semantic/module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this/encryption-at-rest).
Still open
Review the encryption at rest setting: the target behaviour of this setting is not established. Review the encryption at rest setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. It is not stated in stackit_mongodbflex_instance (no encryption attribute) whether STACKIT MongoDB Flex encrypts data at rest: REVIEW (the customer managed key setting reads the key).
What closes it
Review the encryption at rest setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the encryption at rest setting: Review the encryption at rest setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.dynamodb_table contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this|encryption-at-rest
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the encryption at rest setting (encryption-at-rest): Open: no decision of the record has been taken. The knowledge base cannot decide "encryption-at-rest" of the aws.dynamodb_table contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the encryption at rest setting for module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS open input

1 unit: module.retail_app_ecs.module.carts_service.aws_ecs_service.this · owner role not stated · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
carts (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the task definition setting: the target behaviour of this setting is not established. Review the task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.
What closes it
Review the task definition setting: A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.
Next action
Review the task definition setting: Review the task definition setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|task-definition
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the task definition setting (task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the task definition setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Identity Architect) open input

1 unit: module.retail_app_ecs.module.carts_service.aws_ecs_service.this · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
carts (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service execute command setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-identity-architect). Review the service task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the execution role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the task role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-identity-architect).
Still open
Review the service execute command setting: the target behaviour of this setting is not established Review the service task definition setting: the target behaviour of this setting is not established Confirm the execution role ARN of the ECS task definition: the target behaviour of this setting is not established Confirm the task role ARN of the ECS task definition: the target behaviour of this setting is not established. Review the service execute command setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft. Review the service task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates. Confirm the execution role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed. Confirm the task role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs.
What closes it
Review the service execute command setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service task definition setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the execution role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the task role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service execute command setting: Review the service execute command setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-execute-command
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-task-definition
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-execution-role-arn
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-task-role-arn
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the service execute command setting (service-execute-command): Open: no decision of the record has been taken. The knowledge base cannot decide "service-execute-command" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service execute command setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service task definition setting (service-task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "service-task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service task definition setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the execution role ARN of the ECS task definition (td-execution-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the execution role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the execution role ARN of the ECS task definition for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the task role ARN of the ECS task definition (td-task-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the task role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the task role ARN of the ECS task definition for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Network Architect) open input

1 unit: module.retail_app_ecs.module.carts_service.aws_ecs_service.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
carts (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service connect values setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-network-architect). Review the service discovery setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-network-architect). Review the service network placement setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-network-architect). Review the service public IP setting setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-network-architect). Confirm the network mode of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-network-architect).
Still open
Review the service connect values setting: the target behaviour of this setting is not established Review the service discovery setting: the target behaviour of this setting is not established Review the service network placement setting: the target behaviour of this setting is not established Review the service public IP setting setting: the target behaviour of this setting is not established Confirm the network mode of the ECS task definition: the target behaviour of this setting is not established. Review the service connect values setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice. Review the service discovery setting: A check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect. Review the service network placement setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules. Review the service public IP setting setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block. Confirm the network mode of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.
What closes it
Review the service connect values setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service discovery setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE. Review the service network placement setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service public IP setting setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the network mode of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service connect values setting: Review the service connect values setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-connect-values
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-discovery
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-network-placement
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-public-ip-setting
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-network-mode
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Review the service connect values setting (service-connect-values): Open: no decision of the record has been taken. The knowledge base cannot decide "service-connect-values" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service connect values setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service discovery setting (service-discovery): Open: no decision of the record has been taken. The knowledge base cannot decide "service-discovery" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service discovery setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the service network placement setting (service-network-placement): Open: no decision of the record has been taken. The knowledge base cannot decide "service-network-placement" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service network placement setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Review the service public IP setting setting (service-public-ip-setting): Open: no decision of the record has been taken. The knowledge base cannot decide "service-public-ip-setting" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service public IP setting setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Confirm the network mode of the ECS task definition (td-network-mode): Open: no decision of the record has been taken. The knowledge base cannot decide "the network mode of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the network mode of the ECS task definition for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Platform Architect) open input

1 unit: module.retail_app_ecs.module.carts_service.aws_ecs_service.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
carts (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service desired count setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the service desired count setting: the target behaviour of this setting is not established. Review the service desired count setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.
What closes it
Review the service desired count setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service desired count setting: Review the service desired count setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|service-desired-count
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service desired count setting (service-desired-count): Open: no decision of the record has been taken. The knowledge base cannot decide "service-desired-count" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service desired count setting for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Security Architect) open input

1 unit: module.retail_app_ecs.module.carts_service.aws_ecs_service.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
carts (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Confirm the container definitions of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container image registry: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container plaintext secret env: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container secret references: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_ecs_service.this/open-settings-security-architect).
Still open
Confirm the container definitions of the ECS task definition: the target behaviour of this setting is not established Confirm the container image registry: the target behaviour of this setting is not established Confirm the container plaintext secret env: the target behaviour of this setting is not established Confirm the container secret references: the target behaviour of this setting is not established. Confirm the container definitions of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this (aws_dynamodb_table) through this setting (the target does not carry it: it is in the class redesign), so what the reference becomes is part of this setting. Confirm the container image registry: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses. Confirm the container plaintext secret env: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated. Confirm the container secret references: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).
What closes it
Confirm the container definitions of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container image registry: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container plaintext secret env: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container secret references: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the container definitions of the ECS task definition: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-container-definitions
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-container-image-registry
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-container-plaintext-secret-env
  • alias module.retail_app_ecs.module.carts_service.aws_ecs_service.this|td-container-secret-references
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the container definitions of the ECS task definition (td-container-definitions): Open: no decision of the record has been taken. The knowledge base cannot decide "the container definitions of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the container image registry (td-container-image-registry): Open: no decision of the record has been taken. The knowledge base cannot decide "the container image registry" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container image registry for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the container plaintext secret env (td-container-plaintext-secret-env): Open: no decision of the record has been taken. The knowledge base cannot decide "the container plaintext secret env" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container plaintext secret env for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the container secret references (td-container-secret-references): Open: no decision of the record has been taken. The knowledge base cannot decide "the container secret references" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container secret references for module.retail_app_ecs.module.carts_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this · owner role not stated · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
catalog (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the task definition setting: the target behaviour of this setting is not established. Review the task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.
What closes it
Review the task definition setting: A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.
Next action
Review the task definition setting: Review the task definition setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|task-definition
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the task definition setting (task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the task definition setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Identity Architect) open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
catalog (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service execute command setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-identity-architect). Review the service task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the execution role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the task role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-identity-architect).
Still open
Review the service execute command setting: the target behaviour of this setting is not established Review the service task definition setting: the target behaviour of this setting is not established Confirm the execution role ARN of the ECS task definition: the target behaviour of this setting is not established Confirm the task role ARN of the ECS task definition: the target behaviour of this setting is not established. Review the service execute command setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft. Review the service task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates. Confirm the execution role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed. Confirm the task role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs.
What closes it
Review the service execute command setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service task definition setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the execution role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the task role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service execute command setting: Review the service execute command setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-execute-command
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-task-definition
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-execution-role-arn
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-task-role-arn
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the service execute command setting (service-execute-command): Open: no decision of the record has been taken. The knowledge base cannot decide "service-execute-command" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service execute command setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service task definition setting (service-task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "service-task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service task definition setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the execution role ARN of the ECS task definition (td-execution-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the execution role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the execution role ARN of the ECS task definition for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the task role ARN of the ECS task definition (td-task-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the task role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the task role ARN of the ECS task definition for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Network Architect) open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
catalog (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service connect values setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-network-architect). Review the service discovery setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-network-architect). Review the service network placement setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-network-architect). Review the service public IP setting setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-network-architect). Confirm the network mode of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-network-architect).
Still open
Review the service connect values setting: the target behaviour of this setting is not established Review the service discovery setting: the target behaviour of this setting is not established Review the service network placement setting: the target behaviour of this setting is not established Review the service public IP setting setting: the target behaviour of this setting is not established Confirm the network mode of the ECS task definition: the target behaviour of this setting is not established. Review the service connect values setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice. Review the service discovery setting: A check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect. Review the service network placement setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules. Review the service public IP setting setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block. Confirm the network mode of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.
What closes it
Review the service connect values setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service discovery setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE. Review the service network placement setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service public IP setting setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the network mode of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service connect values setting: Review the service connect values setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-connect-values
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-discovery
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-network-placement
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-public-ip-setting
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-network-mode
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Review the service connect values setting (service-connect-values): Open: no decision of the record has been taken. The knowledge base cannot decide "service-connect-values" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service connect values setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service discovery setting (service-discovery): Open: no decision of the record has been taken. The knowledge base cannot decide "service-discovery" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service discovery setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the service network placement setting (service-network-placement): Open: no decision of the record has been taken. The knowledge base cannot decide "service-network-placement" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service network placement setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Review the service public IP setting setting (service-public-ip-setting): Open: no decision of the record has been taken. The knowledge base cannot decide "service-public-ip-setting" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service public IP setting setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Confirm the network mode of the ECS task definition (td-network-mode): Open: no decision of the record has been taken. The knowledge base cannot decide "the network mode of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the network mode of the ECS task definition for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Platform Architect) open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
catalog (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service desired count setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the service desired count setting: the target behaviour of this setting is not established. Review the service desired count setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.
What closes it
Review the service desired count setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service desired count setting: Review the service desired count setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|service-desired-count
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service desired count setting (service-desired-count): Open: no decision of the record has been taken. The knowledge base cannot decide "service-desired-count" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service desired count setting for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Security Architect) open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
catalog (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Confirm the container definitions of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container image registry: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container plaintext secret env: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container secret references: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_ecs_service.this/open-settings-security-architect).
Still open
Confirm the container definitions of the ECS task definition: the target behaviour of this setting is not established Confirm the container image registry: the target behaviour of this setting is not established Confirm the container plaintext secret env: the target behaviour of this setting is not established Confirm the container secret references: the target behaviour of this setting is not established. Confirm the container definitions of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret_version.catalog_db (aws_secretsmanager_secret_version), module.retail_app_ecs.aws_secretsmanager_secret_version.catalog_opensearch (aws_secretsmanager_secret_version). What each reference becomes is part of this setting. Confirm the container image registry: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses. Confirm the container plaintext secret env: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated. Confirm the container secret references: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).
What closes it
Confirm the container definitions of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container image registry: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container plaintext secret env: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container secret references: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the container definitions of the ECS task definition: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-container-definitions
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-container-image-registry
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-container-plaintext-secret-env
  • alias module.retail_app_ecs.module.catalog_service.aws_ecs_service.this|td-container-secret-references
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the container definitions of the ECS task definition (td-container-definitions): Open: no decision of the record has been taken. The knowledge base cannot decide "the container definitions of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the container image registry (td-container-image-registry): Open: no decision of the record has been taken. The knowledge base cannot decide "the container image registry" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container image registry for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the container plaintext secret env (td-container-plaintext-secret-env): Open: no decision of the record has been taken. The knowledge base cannot decide "the container plaintext secret env" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container plaintext secret env for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the container secret references (td-container-secret-references): Open: no decision of the record has been taken. The knowledge base cannot decide "the container secret references" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container secret references for module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this · owner role not stated · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 8 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the task definition setting: the target behaviour of this setting is not established. Review the task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.
What closes it
Review the task definition setting: A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.
Next action
Review the task definition setting: Review the task definition setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|task-definition
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the task definition setting (task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the task definition setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Identity Architect) open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 8 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service execute command setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-identity-architect). Review the service task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the execution role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the task role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-identity-architect).
Still open
Review the service execute command setting: the target behaviour of this setting is not established Review the service task definition setting: the target behaviour of this setting is not established Confirm the execution role ARN of the ECS task definition: the target behaviour of this setting is not established Confirm the task role ARN of the ECS task definition: the target behaviour of this setting is not established. Review the service execute command setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft. Review the service task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates. Confirm the execution role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed. Confirm the task role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs.
What closes it
Review the service execute command setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service task definition setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the execution role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the task role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service execute command setting: Review the service execute command setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-execute-command
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-task-definition
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-execution-role-arn
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-task-role-arn
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the service execute command setting (service-execute-command): Open: no decision of the record has been taken. The knowledge base cannot decide "service-execute-command" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service execute command setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service task definition setting (service-task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "service-task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service task definition setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the execution role ARN of the ECS task definition (td-execution-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the execution role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the execution role ARN of the ECS task definition for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the task role ARN of the ECS task definition (td-task-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the task role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the task role ARN of the ECS task definition for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Network Architect) open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 8 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service connect values setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-network-architect). Review the service discovery setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-network-architect). Review the service network placement setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-network-architect). Review the service public IP setting setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-network-architect). Confirm the network mode of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-network-architect).
Still open
Review the service connect values setting: the target behaviour of this setting is not established Review the service discovery setting: the target behaviour of this setting is not established Review the service network placement setting: the target behaviour of this setting is not established Review the service public IP setting setting: the target behaviour of this setting is not established Confirm the network mode of the ECS task definition: the target behaviour of this setting is not established. Review the service connect values setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice. Review the service discovery setting: A check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect. Review the service network placement setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules. Review the service public IP setting setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block. Confirm the network mode of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.
What closes it
Review the service connect values setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service discovery setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE. Review the service network placement setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service public IP setting setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the network mode of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service connect values setting: Review the service connect values setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-connect-values
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-discovery
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-network-placement
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-public-ip-setting
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-network-mode
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Review the service connect values setting (service-connect-values): Open: no decision of the record has been taken. The knowledge base cannot decide "service-connect-values" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service connect values setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service discovery setting (service-discovery): Open: no decision of the record has been taken. The knowledge base cannot decide "service-discovery" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service discovery setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the service network placement setting (service-network-placement): Open: no decision of the record has been taken. The knowledge base cannot decide "service-network-placement" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service network placement setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Review the service public IP setting setting (service-public-ip-setting): Open: no decision of the record has been taken. The knowledge base cannot decide "service-public-ip-setting" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service public IP setting setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Confirm the network mode of the ECS task definition (td-network-mode): Open: no decision of the record has been taken. The knowledge base cannot decide "the network mode of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the network mode of the ECS task definition for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Platform Architect) open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 8 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service desired count setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the service desired count setting: the target behaviour of this setting is not established. Review the service desired count setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.
What closes it
Review the service desired count setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service desired count setting: Review the service desired count setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|service-desired-count
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service desired count setting (service-desired-count): Open: no decision of the record has been taken. The knowledge base cannot decide "service-desired-count" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service desired count setting for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Security Architect) open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 8 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Confirm the container definitions of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container image registry: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container plaintext secret env: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container secret references: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_ecs_service.this/open-settings-security-architect).
Still open
Confirm the container definitions of the ECS task definition: the target behaviour of this setting is not established Confirm the container image registry: the target behaviour of this setting is not established Confirm the container plaintext secret env: the target behaviour of this setting is not established Confirm the container secret references: the target behaviour of this setting is not established. Confirm the container definitions of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. Confirm the container image registry: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses. Confirm the container plaintext secret env: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated. Confirm the container secret references: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).
What closes it
Confirm the container definitions of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container image registry: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container plaintext secret env: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container secret references: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the container definitions of the ECS task definition: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-container-definitions
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-container-image-registry
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-container-plaintext-secret-env
  • alias module.retail_app_ecs.module.checkout_service.aws_ecs_service.this|td-container-secret-references
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the container definitions of the ECS task definition (td-container-definitions): Open: no decision of the record has been taken. The knowledge base cannot decide "the container definitions of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the container image registry (td-container-image-registry): Open: no decision of the record has been taken. The knowledge base cannot decide "the container image registry" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container image registry for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the container plaintext secret env (td-container-plaintext-secret-env): Open: no decision of the record has been taken. The knowledge base cannot decide "the container plaintext secret env" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container plaintext secret env for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the container secret references (td-container-secret-references): Open: no decision of the record has been taken. The knowledge base cannot decide "the container secret references" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container secret references for module.retail_app_ecs.module.checkout_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS open input

1 unit: module.retail_app_ecs.module.orders_service.aws_ecs_service.this · owner role not stated · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
orders (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the task definition setting: the target behaviour of this setting is not established. Review the task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.
What closes it
Review the task definition setting: A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.
Next action
Review the task definition setting: Review the task definition setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|task-definition
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the task definition setting (task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the task definition setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Identity Architect) open input

1 unit: module.retail_app_ecs.module.orders_service.aws_ecs_service.this · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
orders (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service execute command setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-identity-architect). Review the service task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the execution role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the task role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-identity-architect).
Still open
Review the service execute command setting: the target behaviour of this setting is not established Review the service task definition setting: the target behaviour of this setting is not established Confirm the execution role ARN of the ECS task definition: the target behaviour of this setting is not established Confirm the task role ARN of the ECS task definition: the target behaviour of this setting is not established. Review the service execute command setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft. Review the service task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates. Confirm the execution role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed. Confirm the task role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs.
What closes it
Review the service execute command setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service task definition setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the execution role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the task role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service execute command setting: Review the service execute command setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-execute-command
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-task-definition
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-execution-role-arn
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-task-role-arn
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the service execute command setting (service-execute-command): Open: no decision of the record has been taken. The knowledge base cannot decide "service-execute-command" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service execute command setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service task definition setting (service-task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "service-task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service task definition setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the execution role ARN of the ECS task definition (td-execution-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the execution role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the execution role ARN of the ECS task definition for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the task role ARN of the ECS task definition (td-task-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the task role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the task role ARN of the ECS task definition for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Network Architect) open input

1 unit: module.retail_app_ecs.module.orders_service.aws_ecs_service.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
orders (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service connect values setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-network-architect). Review the service discovery setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-network-architect). Review the service network placement setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-network-architect). Review the service public IP setting setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-network-architect). Confirm the network mode of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-network-architect).
Still open
Review the service connect values setting: the target behaviour of this setting is not established Review the service discovery setting: the target behaviour of this setting is not established Review the service network placement setting: the target behaviour of this setting is not established Review the service public IP setting setting: the target behaviour of this setting is not established Confirm the network mode of the ECS task definition: the target behaviour of this setting is not established. Review the service connect values setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice. Review the service discovery setting: A check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect. Review the service network placement setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules. Review the service public IP setting setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block. Confirm the network mode of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.
What closes it
Review the service connect values setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service discovery setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE. Review the service network placement setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service public IP setting setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the network mode of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service connect values setting: Review the service connect values setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-connect-values
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-discovery
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-network-placement
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-public-ip-setting
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-network-mode
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Review the service connect values setting (service-connect-values): Open: no decision of the record has been taken. The knowledge base cannot decide "service-connect-values" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service connect values setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service discovery setting (service-discovery): Open: no decision of the record has been taken. The knowledge base cannot decide "service-discovery" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service discovery setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the service network placement setting (service-network-placement): Open: no decision of the record has been taken. The knowledge base cannot decide "service-network-placement" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service network placement setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Review the service public IP setting setting (service-public-ip-setting): Open: no decision of the record has been taken. The knowledge base cannot decide "service-public-ip-setting" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service public IP setting setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Confirm the network mode of the ECS task definition (td-network-mode): Open: no decision of the record has been taken. The knowledge base cannot decide "the network mode of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the network mode of the ECS task definition for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Platform Architect) open input

1 unit: module.retail_app_ecs.module.orders_service.aws_ecs_service.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
orders (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service desired count setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the service desired count setting: the target behaviour of this setting is not established. Review the service desired count setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.
What closes it
Review the service desired count setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service desired count setting: Review the service desired count setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|service-desired-count
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service desired count setting (service-desired-count): Open: no decision of the record has been taken. The knowledge base cannot decide "service-desired-count" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service desired count setting for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Security Architect) open input

1 unit: module.retail_app_ecs.module.orders_service.aws_ecs_service.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
orders (PROPOSED)
Wave
wave 7 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Confirm the container definitions of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container image registry: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container plaintext secret env: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container secret references: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_ecs_service.this/open-settings-security-architect).
Still open
Confirm the container definitions of the ECS task definition: the target behaviour of this setting is not established Confirm the container image registry: the target behaviour of this setting is not established Confirm the container plaintext secret env: the target behaviour of this setting is not established Confirm the container secret references: the target behaviour of this setting is not established. Confirm the container definitions of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret_version.mq (aws_secretsmanager_secret_version), module.retail_app_ecs.aws_secretsmanager_secret_version.orders_db (aws_secretsmanager_secret_version). What each reference becomes is part of this setting. Confirm the container image registry: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses. Confirm the container plaintext secret env: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated. Confirm the container secret references: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).
What closes it
Confirm the container definitions of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container image registry: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container plaintext secret env: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container secret references: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the container definitions of the ECS task definition: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-container-definitions
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-container-image-registry
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-container-plaintext-secret-env
  • alias module.retail_app_ecs.module.orders_service.aws_ecs_service.this|td-container-secret-references
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the container definitions of the ECS task definition (td-container-definitions): Open: no decision of the record has been taken. The knowledge base cannot decide "the container definitions of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the container image registry (td-container-image-registry): Open: no decision of the record has been taken. The knowledge base cannot decide "the container image registry" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container image registry for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the container plaintext secret env (td-container-plaintext-secret-env): Open: no decision of the record has been taken. The knowledge base cannot decide "the container plaintext secret env" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container plaintext secret env for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the container secret references (td-container-secret-references): Open: no decision of the record has been taken. The knowledge base cannot decide "the container secret references" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container secret references for module.retail_app_ecs.module.orders_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS open input

1 unit: module.retail_app_ecs.module.ui_service.aws_ecs_service.this · owner role not stated · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 9 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the task definition setting: the target behaviour of this setting is not established. Review the task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.
What closes it
Review the task definition setting: A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.
Next action
Review the task definition setting: Review the task definition setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|task-definition
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the task definition setting (task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the task definition setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Identity Architect) open input

1 unit: module.retail_app_ecs.module.ui_service.aws_ecs_service.this · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 9 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service execute command setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-identity-architect). Review the service task definition setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the execution role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-identity-architect). Confirm the task role ARN of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-identity-architect).
Still open
Review the service execute command setting: the target behaviour of this setting is not established Review the service task definition setting: the target behaviour of this setting is not established Confirm the execution role ARN of the ECS task definition: the target behaviour of this setting is not established Confirm the task role ARN of the ECS task definition: the target behaviour of this setting is not established. Review the service execute command setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft. Review the service task definition setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates. Confirm the execution role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed. Confirm the task role ARN of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs.
What closes it
Review the service execute command setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service task definition setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the execution role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the task role ARN of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service execute command setting: Review the service execute command setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-execute-command
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-task-definition
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-execution-role-arn
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-task-role-arn
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the service execute command setting (service-execute-command): Open: no decision of the record has been taken. The knowledge base cannot decide "service-execute-command" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service execute command setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service task definition setting (service-task-definition): Open: no decision of the record has been taken. The knowledge base cannot decide "service-task-definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service task definition setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the execution role ARN of the ECS task definition (td-execution-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the execution role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the execution role ARN of the ECS task definition for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the task role ARN of the ECS task definition (td-task-role-arn): Open: no decision of the record has been taken. The knowledge base cannot decide "the task role ARN of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the task role ARN of the ECS task definition for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Network Architect) open input

1 unit: module.retail_app_ecs.module.ui_service.aws_ecs_service.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 9 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service connect values setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect). Review the service discovery setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect). Review the service load balancer target setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect). Review the service network placement setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect). Review the service public IP setting setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect). Confirm the network mode of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-network-architect).
Still open
Review the service connect values setting: the target behaviour of this setting is not established Review the service discovery setting: the target behaviour of this setting is not established Review the service load balancer target setting: the target behaviour of this setting is not established Review the service network placement setting: the target behaviour of this setting is not established Review the service public IP setting setting: the target behaviour of this setting is not established Confirm the network mode of the ECS task definition: the target behaviour of this setting is not established. Review the service connect values setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice. Review the service discovery setting: A check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect. Review the service load balancer target setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states which container and port receive the load balancer's traffic, the target group or classic load balancer name, and the blue/green listener rules and role: the wiring becomes a Kubernetes Service / Ingress selector and a STACKIT load balancer target pool, written by a person (the draft has no service block to carry it). Review the service network placement setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules. Review the service public IP setting setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block. Confirm the network mode of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.
What closes it
Review the service connect values setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service discovery setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE. Review the service load balancer target setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service network placement setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the service public IP setting setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the network mode of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service connect values setting: Review the service connect values setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
6
Show the 6 open critical semantics
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-connect-values
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-discovery
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-load-balancer-target
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-network-placement
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-public-ip-setting
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-network-mode
Options
None listed.
Settings
6 critical settings of the unit, each with its own reason, state and options:
  1. Review the service connect values setting (service-connect-values): Open: no decision of the record has been taken. The knowledge base cannot decide "service-connect-values" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service connect values setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service discovery setting (service-discovery): Open: no decision of the record has been taken. The knowledge base cannot decide "service-discovery" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service discovery setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the service load balancer target setting (service-load-balancer-target): Open: no decision of the record has been taken. The knowledge base cannot decide "service-load-balancer-target" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service load balancer target setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Review the service network placement setting (service-network-placement): Open: no decision of the record has been taken. The knowledge base cannot decide "service-network-placement" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service network placement setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Review the service public IP setting setting (service-public-ip-setting): Open: no decision of the record has been taken. The knowledge base cannot decide "service-public-ip-setting" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service public IP setting setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  6. Confirm the network mode of the ECS task definition (td-network-mode): Open: no decision of the record has been taken. The knowledge base cannot decide "the network mode of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the network mode of the ECS task definition for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Platform Architect) open input

1 unit: module.retail_app_ecs.module.ui_service.aws_ecs_service.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 9 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the service desired count setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-platform-architect).
Still open
Review the service desired count setting: the target behaviour of this setting is not established. Review the service desired count setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.
What closes it
Review the service desired count setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the service desired count setting: Review the service desired count setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|service-desired-count
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service desired count setting (service-desired-count): Open: no decision of the record has been taken. The knowledge base cannot decide "service-desired-count" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the service desired count setting for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ECS (Security Architect) open input

1 unit: module.retail_app_ecs.module.ui_service.aws_ecs_service.this · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 9 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Confirm the container definitions of the ECS task definition: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container image registry: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container plaintext secret env: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-security-architect). Confirm the container secret references: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_ecs_service.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_ecs_service.this/open-settings-security-architect).
Still open
Confirm the container definitions of the ECS task definition: the target behaviour of this setting is not established Confirm the container image registry: the target behaviour of this setting is not established Confirm the container plaintext secret env: the target behaviour of this setting is not established Confirm the container secret references: the target behaviour of this setting is not established. Confirm the container definitions of the ECS task definition: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. Confirm the container image registry: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses. Confirm the container plaintext secret env: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated. Confirm the container secret references: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).
What closes it
Confirm the container definitions of the ECS task definition: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container image registry: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container plaintext secret env: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the container secret references: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the container definitions of the ECS task definition: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.ecs contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-container-definitions
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-container-image-registry
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-container-plaintext-secret-env
  • alias module.retail_app_ecs.module.ui_service.aws_ecs_service.this|td-container-secret-references
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the container definitions of the ECS task definition (td-container-definitions): Open: no decision of the record has been taken. The knowledge base cannot decide "the container definitions of the ECS task definition" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container definitions of the ECS task definition for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the container image registry (td-container-image-registry): Open: no decision of the record has been taken. The knowledge base cannot decide "the container image registry" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container image registry for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the container plaintext secret env (td-container-plaintext-secret-env): Open: no decision of the record has been taken. The knowledge base cannot decide "the container plaintext secret env" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container plaintext secret env for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the container secret references (td-container-secret-references): Open: no decision of the record has been taken. The knowledge base cannot decide "the container secret references" of the aws.ecs contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Confirm the container secret references for module.retail_app_ecs.module.ui_service.aws_ecs_service.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ElastiCache (Data Architect) open input

1 unit: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default · owner role Data Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 4 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the seed snapshot setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-data-architect). Review the snapshots off setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-data-architect).
Still open
Review the seed snapshot setting: the target behaviour of this setting is not established Review the snapshots off setting: the target behaviour of this setting is not established. Review the seed snapshot setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The instance is created empty: the data is migrated by a person (RDB export and import, or replication); stackit_valkey_instance and stackit_redis_instance have no snapshot or restore attribute (pinned provider). snapshot_arns is observed for every set value, an empty list included: the draft names snapshot_arns NOT CARRIED even when it is empty; a conditional with a null branch stays undecided, hence REVIEW. Review the snapshots off setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. No snapshots in the source; whether a STACKIT Valkey instance takes snapshots by default (parameters.snapshot, not generated) is not documented — REVIEW.
What closes it
Review the seed snapshot setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the snapshots off setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the seed snapshot setting: Review the seed snapshot setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-DATA-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.elasticache contract
Affected applications
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|seed-snapshot
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|snapshots-off
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the seed snapshot setting (seed-snapshot): Open: no decision of the record has been taken. The knowledge base cannot decide "seed-snapshot" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the seed snapshot setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the snapshots off setting (snapshots-off): Open: no decision of the record has been taken. The knowledge base cannot decide "snapshots-off" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the snapshots off setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ElastiCache (Platform Architect) open input

1 unit: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
checkout (PROPOSED)
Wave
wave 4 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the failover off setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-platform-architect). Review the parameter group setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-platform-architect). In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead. Review the parameter group default setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-platform-architect). Confirm the replication group ID of the ElastiCache replication group: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-platform-architect).
Still open
Review the failover off setting: the target behaviour of this setting is not established Review the parameter group setting: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the parameter group default setting: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Confirm the replication group ID of the ElastiCache replication group: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the failover off setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A single node without failover: the draft asks for the plan (plan_name is a variable), so whether the target is a Single plan is a person's choice — REVIEW, not PRESERVED. Review the parameter group setting: A check of the knowledge base (redis parameter group) needs a value the scan cannot read statically, so it could not decide. The setting states which custom set of engine parameters (a parameter group) the cache runs with. Review the parameter group default setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A parameter group named default.<family> carries the AWS default settings of that engine family and version, and its name can carry the topology: a group with cluster.on in its name enables cluster mode. Confirm the replication group ID of the ElastiCache replication group: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The identifier of the cache replication group. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).
Ways out
  1. Review the parameter group setting: Take the decision the knowledge base's note names and carry it out (alternatives: not stated in the knowledge base); needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person takes the decision the closing condition names and carries it out; where it changes what the draft writes, the draft is regenerated or changed by hand.; regeneration: not stated — treated as required; risk: The knowledge base states no evidenced alternatives to choose from; a decision taken without the source context the note names can change what the workload reaches, stores or exposes.; the draft is generated again with it
  2. Review the parameter group default setting: Verify what the knowledge base's note asks to confirm; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person checks the setting on the STACKIT target (or against the source, the clients and the tooling that depend on it) and records the result; nothing in the draft changes.; regeneration: not stated — treated as required; risk: A setting confirmed from the draft alone, without the check, can still differ at runtime.; the draft is generated again with it
  3. Confirm the replication group ID of the ElastiCache replication group: Verify what the knowledge base's note asks to confirm; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person checks the setting on the STACKIT target (or against the source, the clients and the tooling that depend on it) and records the result; nothing in the draft changes.; regeneration: not stated — treated as required; risk: A setting confirmed from the draft alone, without the check, can still differ at runtime.; the draft is generated again with it
What closes it
Review the failover off setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the parameter group setting: A person maps each parameter the group changes to the parameters of the Valkey instance (for example the memory policy and the keyspace notifications) and sets them there. Review the parameter group setting: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value. Review the parameter group default setting: A person confirms that the defaults of the source parameter group family are what the application needs on the target and, for a cluster-mode group, treats it as the cluster-mode question. Confirm the replication group ID of the ElastiCache replication group: A person confirms the instance name the target uses against what refers to the replication group id, or accepts the new name. Verification: Review the parameter group setting: the decision or the manual work is done and recorded (who, when, what was configured and why); Review the parameter group default setting: the check, proof or closing evidence is recorded with its result; Confirm the replication group ID of the ElastiCache replication group: the check, proof or closing evidence is recorded with its result.
Next action
Review the failover off setting: Review the failover off setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.elasticache contract
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|failover-off
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|parameter-group
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|parameter-group-default
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|tc-elasticache-replication-group-replication-group-id
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the failover off setting (failover-off): Open: no decision of the record has been taken. The knowledge base cannot decide "failover-off" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the failover off setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the parameter group setting (parameter-group): Open: no decision of the record has been taken. The knowledge base cannot decide "parameter-group" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default outside the draft; the plan states no title for it.
  3. Review the parameter group default setting (parameter-group-default): Open: no decision of the record has been taken. The knowledge base cannot decide "parameter-group-default" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default: the check, proof or closing evidence is recorded with its result.
  4. Confirm the replication group ID of the ElastiCache replication group (tc-elasticache-replication-group-replication-group-id): Open: no decision of the record has been taken. The knowledge base cannot decide "the replication group ID of the ElastiCache replication group" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default: the check, proof or closing evidence is recorded with its result.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an ElastiCache (Security Architect) open input

1 unit: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default · owner role Security Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
checkout (PROPOSED)
Wave
wave 4 · steps in data services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the at rest encryption off setting: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-security-architect). Confirm the transit encryption enabled setting of the ElastiCache replication group: The draft does not carry the setting on module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default; a manual step stands for it (MAN/semantic/module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default/open-settings-security-architect). In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead.
Still open
Review the at rest encryption off setting: the target behaviour of this setting is not established Confirm the transit encryption enabled setting of the ElastiCache replication group: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the at rest encryption off setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. No at-rest encryption in the source; stackit_valkey_instance states nothing about at-rest encryption (pinned provider) — REVIEW, not PRESERVED. Confirm the transit encryption enabled setting of the ElastiCache replication group: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_elasticache_replication_group.transit_encryption_enabled: Encryption in transit (TLS) between clients and the cache; losing it sends data and AUTH in clear. Held CRITICAL: it decides whether and with which key data or metadata is encrypted; dropping it silently could leave data unencrypted on the target.
Ways out
  1. Confirm the transit encryption enabled setting of the ElastiCache replication group: Verify what the knowledge base's note asks to confirm; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person checks the setting on the STACKIT target (or against the source, the clients and the tooling that depend on it) and records the result; nothing in the draft changes.; regeneration: not stated — treated as required; risk: A setting confirmed from the draft alone, without the check, can still differ at runtime.; the draft is generated again with it
  2. Confirm the transit encryption enabled setting of the ElastiCache replication group: Switch every client to TLS against the Key Value Store; effect: The clients connect to the instance with TLS (the migration tutorial uses the --tls option, and a public SwissSign certificate that modern systems trust, or the SwissSign root and intermediate certificates passed to the client). Whether the instance also accepts a connection without TLS is not stated in the pages read, so the customer checks it on the instance and does not rely on the platform to refuse a plain connection. A review records the choice and closes no critical setting by itself.
What closes it
Review the at rest encryption off setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the transit encryption enabled setting of the ElastiCache replication group: A person confirms that clients reach the cache over TLS on the target, so that data and the authentication token are not sent in clear. Verification: Confirm the transit encryption enabled setting of the ElastiCache replication group: the check, proof or closing evidence is recorded with its result.
Next action
Review the at rest encryption off setting: Review the at rest encryption off setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.elasticache contract
The plan’s reasons
  • an observation on a STACKIT instance (or STACKIT's statement) of whether a connection without TLS is accepted, since the pages read do not state it
  • the clients of the cache and whether each can connect with TLS (and verify the certificate)
Affected applications
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|at-rest-encryption-off
  • alias module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default|tcp-elasticache-replication-group-transit-encryption-enabled
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the at rest encryption off setting (at-rest-encryption-off): Open: no decision of the record has been taken. The knowledge base cannot decide "at-rest-encryption-off" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the at rest encryption off setting for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the transit encryption enabled setting of the ElastiCache replication group (tcp-elasticache-replication-group-transit-encryption-enabled): Open: no decision of the record has been taken. The knowledge base cannot decide "the transit encryption enabled setting of the ElastiCache replication group" of the aws.elasticache contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default: the check, proof or closing evidence is recorded with its result.
    • clients-connect-with-tls — Switch every client to TLS against the Key Value Store. The clients connect to the instance with TLS (the migration tutorial uses the --tls option, and a public SwissSign certificate that modern systems trust, or the SwissSign root and intermediate certificates passed to the client). Whether the instance also accepts a connection without TLS is not stated in the pages read, so the customer checks it on the instance and does not rely on the platform to refuse a plain connection. A review records the choice and closes no critical setting by itself.
Recommended option
None.
Status
Open: not decided yet.

What the 5 records below share:

What the draft does
In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead.
Still open
Review the IAM managed ECS setting: the target behaviour of this setting is not established Review the IAM trust service workload setting: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Translate the IAM permissions into STACKIT roles: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Decide who may assume each IAM role: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the IAM managed ECS setting: A check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload. Review the IAM trust service workload setting: A check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit). Translate the IAM permissions into STACKIT roles: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person. Decide who may assume each IAM role: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.
Ways out
  1. Review the IAM trust service workload setting: Bring the closing evidence the finding names, or record the decision it asks for; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person reads the finding the critical-settings record of the run names for the setting (its message holds the closing evidence), brings that evidence or records the decision, and the record keeps it.; regeneration: not stated — treated as required; risk: A decision recorded without the evidence the finding names leaves the difference the finding describes in place.; the draft is generated again with it
  2. Translate the IAM permissions into STACKIT roles: Carry out the work the knowledge base's note names, by hand; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person does the work outside the draft; StackToIT neither does nor verifies it.; regeneration: not stated — treated as required; risk: The work is not in the draft, so it is forgotten unless it is planned as a manual step.; the draft is generated again with it
  3. Translate the IAM permissions into STACKIT roles: Bind the minimum STACKIT roles the workload needs to the account; effect: A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role: Carry out the work the knowledge base's note names, by hand; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person does the work outside the draft; StackToIT neither does nor verifies it.; regeneration: not stated — treated as required; risk: The work is not in the draft, so it is forgotten unless it is planned as a manual step.; the draft is generated again with it
What closes it
Review the IAM managed ECS setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. Review the IAM trust service workload setting: The knowledge base states no closing condition for this setting; the run closes it when a person decides it as the open check asks and that check's closing evidence or decision is recorded. Review the IAM trust service workload setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. Translate the IAM permissions into STACKIT roles: A person translates each permission of the attached policies into STACKIT roles on the target resources. Decide who may assume each IAM role: A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it. Verification: Review the IAM trust service workload setting: the check, proof or closing evidence is recorded with its result; Translate the IAM permissions into STACKIT roles: the decision or the manual work is done and recorded (who, when, what was configured and why); Decide who may assume each IAM role: the decision or the manual work is done and recorded (who, when, what was configured and why).
Review the critical settings of an IAM role (Identity Architect) open input

1 unit: module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
carts (PROPOSED)
Wave
wave 1 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the IAM managed ECS setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role/open-settings). Review the IAM trust service workload setting: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role/open-settings). Translate the IAM permissions into STACKIT roles: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role/open-settings). Decide who may assume each IAM role: The draft does not carry the setting on module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role/open-settings).
Still open
Translate the IAM permissions into STACKIT roles: The scanned configuration attaches to module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role AWS managed policy AmazonECSTaskExecutionRolePolicy (module.retail_app_ecs.module.carts_service.aws_iam_role_policy_attachment.task_execution_role_policy): a person translates each into STACKIT role assignments; the list decides nothing.
Next action
Review the IAM managed ECS setting: Review the IAM managed ECS setting for module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-IAM-ROLE-0AE33885 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.iam_role contract
The plan’s reasons
  • the STACKIT roles the workload needs at least, per target resource, chosen from the roles the authorization API lists, with what each AWS policy of the record allowed beside it
  • who granted them and when (a reviewed least-privilege list, not a copy of the AWS policies)
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role|iam-managed-ecs
  • alias module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role|iam-trust-service-workload
  • alias module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role|permissions
  • alias module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role|trust
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM managed ECS setting (iam-managed-ecs): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-managed-ecs" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the IAM managed ECS setting for module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the IAM trust service workload setting (iam-trust-service-workload): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-trust-service-workload" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role: the check, proof or closing evidence is recorded with its result.
  3. Translate the IAM permissions into STACKIT roles (permissions): Open: no decision of the record has been taken. The knowledge base cannot decide "permissions" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
    • bind-minimum-stackit-roles — Bind the minimum STACKIT roles the workload needs to the account. A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role (trust): Open: no decision of the record has been taken. The knowledge base cannot decide "trust" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an IAM role (Identity Architect) open input

1 unit: module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
catalog (PROPOSED)
Wave
wave 6 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the IAM managed ECS setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role/open-settings). Review the IAM trust service workload setting: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role/open-settings). Translate the IAM permissions into STACKIT roles: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role/open-settings). Decide who may assume each IAM role: The draft does not carry the setting on module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role/open-settings).
Still open
The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db (aws_secretsmanager_secret), module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch (aws_secretsmanager_secret). What each reference becomes is part of this setting. Translate the IAM permissions into STACKIT roles: The scanned configuration attaches to module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role AWS managed policy AmazonECSTaskExecutionRolePolicy (module.retail_app_ecs.module.catalog_service.aws_iam_role_policy_attachment.task_execution_role_policy), a policy the scan cannot read (module.retail_app_ecs.module.catalog_service.aws_iam_role_policy_attachment.task_execution_role_additional): a person translates each into STACKIT role assignments; the list decides nothing.
Next action
Review the IAM managed ECS setting: Review the IAM managed ECS setting for module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-IAM-RO-88D16913 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.iam_role contract
The plan’s reasons
  • the STACKIT roles the workload needs at least, per target resource, chosen from the roles the authorization API lists, with what each AWS policy of the record allowed beside it
  • who granted them and when (a reviewed least-privilege list, not a copy of the AWS policies)
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role|iam-managed-ecs
  • alias module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role|iam-trust-service-workload
  • alias module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role|permissions
  • alias module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role|trust
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM managed ECS setting (iam-managed-ecs): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-managed-ecs" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the IAM managed ECS setting for module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the IAM trust service workload setting (iam-trust-service-workload): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-trust-service-workload" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role: the check, proof or closing evidence is recorded with its result.
  3. Translate the IAM permissions into STACKIT roles (permissions): Open: no decision of the record has been taken. The knowledge base cannot decide "permissions" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
    • bind-minimum-stackit-roles — Bind the minimum STACKIT roles the workload needs to the account. A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role (trust): Open: no decision of the record has been taken. The knowledge base cannot decide "trust" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an IAM role (Identity Architect) open input

1 unit: module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
checkout (PROPOSED)
Wave
wave 1 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the IAM managed ECS setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role/open-settings). Review the IAM trust service workload setting: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role/open-settings). Translate the IAM permissions into STACKIT roles: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role/open-settings). Decide who may assume each IAM role: The draft does not carry the setting on module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role/open-settings).
Still open
Translate the IAM permissions into STACKIT roles: The scanned configuration attaches to module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role AWS managed policy AmazonECSTaskExecutionRolePolicy (module.retail_app_ecs.module.checkout_service.aws_iam_role_policy_attachment.task_execution_role_policy): a person translates each into STACKIT role assignments; the list decides nothing.
Next action
Review the IAM managed ECS setting: Review the IAM managed ECS setting for module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-IAM-R-7A7D9673 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.iam_role contract
The plan’s reasons
  • the STACKIT roles the workload needs at least, per target resource, chosen from the roles the authorization API lists, with what each AWS policy of the record allowed beside it
  • who granted them and when (a reviewed least-privilege list, not a copy of the AWS policies)
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role|iam-managed-ecs
  • alias module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role|iam-trust-service-workload
  • alias module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role|permissions
  • alias module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role|trust
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM managed ECS setting (iam-managed-ecs): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-managed-ecs" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the IAM managed ECS setting for module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the IAM trust service workload setting (iam-trust-service-workload): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-trust-service-workload" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role: the check, proof or closing evidence is recorded with its result.
  3. Translate the IAM permissions into STACKIT roles (permissions): Open: no decision of the record has been taken. The knowledge base cannot decide "permissions" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
    • bind-minimum-stackit-roles — Bind the minimum STACKIT roles the workload needs to the account. A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role (trust): Open: no decision of the record has been taken. The knowledge base cannot decide "trust" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an IAM role (Identity Architect) open input

1 unit: module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
orders (PROPOSED)
Wave
wave 6 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the IAM managed ECS setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role/open-settings). Review the IAM trust service workload setting: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role/open-settings). Translate the IAM permissions into STACKIT roles: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role/open-settings). Decide who may assume each IAM role: The draft does not carry the setting on module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role/open-settings).
Still open
The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret.mq (aws_secretsmanager_secret), module.retail_app_ecs.aws_secretsmanager_secret.orders_db (aws_secretsmanager_secret). What each reference becomes is part of this setting. Translate the IAM permissions into STACKIT roles: The scanned configuration attaches to module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role AWS managed policy AmazonECSTaskExecutionRolePolicy (module.retail_app_ecs.module.orders_service.aws_iam_role_policy_attachment.task_execution_role_policy), a policy the scan cannot read (module.retail_app_ecs.module.orders_service.aws_iam_role_policy_attachment.task_execution_role_additional): a person translates each into STACKIT role assignments; the list decides nothing.
Next action
Review the IAM managed ECS setting: Review the IAM managed ECS setting for module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-IAM-ROL-05049202 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.iam_role contract
The plan’s reasons
  • the STACKIT roles the workload needs at least, per target resource, chosen from the roles the authorization API lists, with what each AWS policy of the record allowed beside it
  • who granted them and when (a reviewed least-privilege list, not a copy of the AWS policies)
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role|iam-managed-ecs
  • alias module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role|iam-trust-service-workload
  • alias module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role|permissions
  • alias module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role|trust
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM managed ECS setting (iam-managed-ecs): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-managed-ecs" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the IAM managed ECS setting for module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the IAM trust service workload setting (iam-trust-service-workload): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-trust-service-workload" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role: the check, proof or closing evidence is recorded with its result.
  3. Translate the IAM permissions into STACKIT roles (permissions): Open: no decision of the record has been taken. The knowledge base cannot decide "permissions" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
    • bind-minimum-stackit-roles — Bind the minimum STACKIT roles the workload needs to the account. A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role (trust): Open: no decision of the record has been taken. The knowledge base cannot decide "trust" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an IAM role (Identity Architect) open input

1 unit: module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
ui (PROPOSED)
Wave
wave 1 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the IAM managed ECS setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role/open-settings). Review the IAM trust service workload setting: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role/open-settings). Translate the IAM permissions into STACKIT roles: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role/open-settings). Decide who may assume each IAM role: The draft does not carry the setting on module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role/open-settings).
Still open
Translate the IAM permissions into STACKIT roles: The scanned configuration attaches to module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role AWS managed policy AmazonECSTaskExecutionRolePolicy (module.retail_app_ecs.module.ui_service.aws_iam_role_policy_attachment.task_execution_role_policy): a person translates each into STACKIT role assignments; the list decides nothing.
Next action
Review the IAM managed ECS setting: Review the IAM managed ECS setting for module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-IAM-ROLE-TA-E93926D0 (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.iam_role contract
The plan’s reasons
  • the STACKIT roles the workload needs at least, per target resource, chosen from the roles the authorization API lists, with what each AWS policy of the record allowed beside it
  • who granted them and when (a reviewed least-privilege list, not a copy of the AWS policies)
Affected applications
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role|iam-managed-ecs
  • alias module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role|iam-trust-service-workload
  • alias module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role|permissions
  • alias module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role|trust
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM managed ECS setting (iam-managed-ecs): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-managed-ecs" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the IAM managed ECS setting for module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the IAM trust service workload setting (iam-trust-service-workload): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-trust-service-workload" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role: the check, proof or closing evidence is recorded with its result.
  3. Translate the IAM permissions into STACKIT roles (permissions): Open: no decision of the record has been taken. The knowledge base cannot decide "permissions" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
    • bind-minimum-stackit-roles — Bind the minimum STACKIT roles the workload needs to the account. A person chooses the least STACKIT roles the workload needs from the roles the authorization API lists and binds them to the service account (where the draft writes one, as the value of its role variable, which has no default); the AWS policies the record lists are the source facts the choice starts from, never an equivalent: STACKIT grants a role on a resource, and no policy document, condition or resource pattern is carried. A review records the choice; the roles are bound only by the value given at apply, so the review states no effect on the draft and frees nothing.
  4. Decide who may assume each IAM role (trust): Open: no decision of the record has been taken. The knowledge base cannot decide "trust" of the aws.iam_role contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role outside the draft; the plan states no title for it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a KMS key (Identity Architect) open input

1 unit: module.retail_app_ecs.aws_kms_key.cmk · owner role Identity Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • module.retail_app_ecs.aws_kms_key.cmk is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: catalog, orders
Wave
wave 1 · steps in security
Approval
not approved: no decisions file was given with this run
What the draft does
Review the deletion window setting: The draft does not carry the setting on module.retail_app_ecs.aws_kms_key.cmk; a manual step stands for it (MAN/semantic/module.retail_app_ecs.aws_kms_key.cmk/deletion-window).
Still open
Review the deletion window setting: the target behaviour of this setting is not established. Review the deletion window setting: A check of the knowledge base (kms deletion window) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). STACKIT KMS deletes a key scheduled for deletion after 30 days (docs create-and-manage-keys, 'Delete a key'), with no setting: 30 is PRESERVED, another window REVIEW.
What closes it
Review the deletion window setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.
Next action
Review the deletion window setting: Review the deletion window setting for module.retail_app_ecs.aws_kms_key.cmk, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-MODULE-RETAIL-APP-ECS-AWS-KMS-KEY-CMK (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.kms_key contract
Affected applications
None named.
Open critical semantics (unit|semantic)
1 alias module.retail_app_ecs.aws_kms_key.cmk|deletion-window
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the deletion window setting (deletion-window): Open: no decision of the record has been taken. The knowledge base cannot decide "deletion-window" of the aws.kms_key contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the deletion window setting for module.retail_app_ecs.aws_kms_key.cmk, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of an LB (Platform Architect) open input

1 unit: module.retail_app_ecs.module.alb.aws_lb.this · owner role Platform Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Review the LB connection timeouts setting: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-platform-architect). Review the request header options setting: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-platform-architect). Confirm the name of the load balancer: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-platform-architect). When the draft carries it (the critical-settings record of the run names the step that writes the name, as in most estates checked when this entry was written), the source name is written on the load balancer. When it does not (the record names no carrying step, as in one estate checked), the draft does not write the source name: what it writes instead is in the unit's Terraform comments.
Still open
Review the LB connection timeouts setting: the target behaviour of this setting is not established Review the request header options setting: the target behaviour of this setting is not established Confirm the name of the load balancer: That nothing that addressed the source load balancer by its name or AWS host name is left pointing at AWS. Review the LB connection timeouts setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_lb.idle_timeout and client_keep_alive (aws 6.66.0): how long the load balancer lets a client connection idle and how long it keeps it open. The STACKIT application load balancer has no such attribute and the draft does not carry them - REVIEW: a person decides whether the applications behind the load balancer (long polling, streaming, WebSockets, slow requests) cope with the STACKIT default. aws_alb, the alias type, is not read here. Review the request header options setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states which extra headers the load balancer adds to the request the target receives (TLS version and cipher suite, the client port in X-Forwarded-For) and whether it keeps the original Host header. Confirm the name of the load balancer: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_lb.name: Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract). No semantic of this family has verified it as carried.
Ways out
  1. Confirm the name of the load balancer: When the draft carries it: confirm the name the plan step writes against what refers to it; needs the critical-settings record of the run names the step that writes the name, the list of things that refer to the source load balancer's name or AWS DNS name; effect: Nothing in the draft changes.; risk: A client that used the AWS-generated host name needs the STACKIT address; the name alone does not move it.
  2. Confirm the name of the load balancer: When it does not: set the load balancer's name in the draft by hand, or accept the name the draft writes; needs the name the load balancer should carry on the target; effect: The name attribute of the drafted load balancer is changed by hand before apply.; risk: A name changed by hand after a later regeneration is lost unless it is changed again.
What closes it
Review the LB connection timeouts setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the request header options setting: A person decides, for each setting, what the STACKIT load balancer or the application does instead, because the STACKIT application load balancer has no setting that adds, rewrites or renames a request header towards its targets (pinned provider). Confirm the name of the load balancer: A person confirms the name the load balancer carries on the target against what refers to the source name, or accepts the new name. Verification: Confirm the name of the load balancer: the references to the name are listed and moved or accepted.
Next action
Review the LB connection timeouts setting: Review the LB connection timeouts setting for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-ALB-AWS-LB-THIS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the aws.lb contract
Affected applications
None named.
Open critical semantics (unit|semantic)
3
Show the 3 open critical semantics
  • alias module.retail_app_ecs.module.alb.aws_lb.this|lb-connection-timeouts
  • alias module.retail_app_ecs.module.alb.aws_lb.this|request-header-options
  • alias module.retail_app_ecs.module.alb.aws_lb.this|tc-lb-name
Options
None listed.
Settings
3 critical settings of the unit, each with its own reason, state and options:
  1. Review the LB connection timeouts setting (lb-connection-timeouts): Open: no decision of the record has been taken. The knowledge base cannot decide "lb-connection-timeouts" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the LB connection timeouts setting for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the request header options setting (request-header-options): Open: no decision of the record has been taken. The knowledge base cannot decide "request-header-options" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the request header options setting for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the name of the load balancer (tc-lb-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the LB" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: The draft does not carry the name of the LB for module.retail_app_ecs.module.alb.aws_lb.this: set the load balancer's name in the draft by hand, or accept the name the draft writes.
Recommended option
None.
Status
Open: not decided yet.

Load Balancer Network & Access

1 record: 1 open input
Review the critical settings of an LB (Network Architect) open input

1 unit: module.retail_app_ecs.module.alb.aws_lb.this · owner role Network Architect · required by phase: not stated · 1 step rests on it

Options and trade-off
none listed: the knowledge base has no options for this kind of decision, so none is invented and a person states the answer in the decisions file
Applications touched
ui (PROPOSED)
Wave
wave 3 · steps in platform services
Approval
not approved: no decisions file was given with this run
What the draft does
Decide the ALB client access: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-network-architect). Two states. When the draft carries the restriction (the source rules name ranges the scan proves), the load balancer is written with those ranges as its allowed source ranges (options.access_control.allowed_source_ranges), and the critical-settings record of the run names the step that carries them. When it does not (a group reference, a prefix list, a variable, or a range admitted on some ports only), the target admits more clients than the source: the load balancer waits for the decision on the widened exposure, and the plan holds a manual step of the Security Architect that restricts its clients; where no range at all can be proven, no access control is written. Review the LB routing and addressing setting: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-network-architect). Review the LB subnets setting: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-network-architect). In the estates checked when this entry was written, the draft does not carry these settings: what it writes instead (a variable, a "not carried" line in the Terraform comments, or nothing) is stated per unit in the generated Terraform. Where the critical-settings record of a run names a step that carries a setting (with the evidence of the value), a person confirms that value instead. Decide who may reach the service over the network: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-network-architect). Review the request handling setting: The draft does not carry the setting on module.retail_app_ecs.module.alb.aws_lb.this; a manual step stands for it (MAN/semantic/module.retail_app_ecs.module.alb.aws_lb.this/open-settings-network-architect).
Still open
Decide the ALB client access: That the target admits only the clients the source admitted. Review the LB routing and addressing setting: the target behaviour of this setting is not established Review the LB subnets setting: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Decide who may reach the service over the network: That the STACKIT target reproduces each setting, or that the difference is acceptable for the workload: nothing in the knowledge base proves either. Review the request handling setting: the target behaviour of this setting is not established. Decide the ALB client access: A check of the knowledge base (lb security groups) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Who may reach the load balancer, read from the ingress rules of the security groups that filter its clients. A group reference, a prefix list, an IPv6 range or a variable is not carried: the plan lists the clients the target would block and adds the client-access manual step for the Security Architect. Review the LB routing and addressing setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states how the load balancer answers DNS for clients (Availability Zone affinity), whether it still forwards to targets when AWS WAF cannot be reached (fail open), zonal shift, customer-owned address pools and IPv6 source NAT prefixes. Review the LB subnets setting: The value is not visible statically (a case of the mapping rule for this kind of unit), so nothing is credited for it. The load balancer takes the network of its one converted subnet (networks.network_id; several subnets are lb subnets several, REVIEW): STACKIT networks are regional, one network holds what the source spread over zonal subnets. Decide who may reach the service over the network: Whether the draft carries this setting is decided by its semantic ledger entry "network exposure", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). internal not visible statically (a variable): the source states no exposure and the draft carries nothing for it; a person decides whether the STACKIT load balancer is private_network_only (REVIEW). Review the request handling setting: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states how the load balancer treats HTTP requests that may carry a request-smuggling (desync) risk, and how it rewrites the X-Forwarded-For header before the target sees it.
Ways out
  1. Decide the ALB client access: When the draft carries the ranges: confirm them against the source rules; needs the critical-settings record of the run names the step that carries the ranges, and the ranges are written as the load balancer's allowed source ranges, the ingress rules of every security group on the source load balancer; effect: Nothing in the draft changes; the restriction applies to the whole load balancer, not per listener or port.; risk: Per-port restrictions of the source are merged into one list for all listeners.
  2. Decide the ALB client access: When it does not: the Security Architect restricts the clients of the load balancer (the manual step of the plan); needs the ingress rules of every security group on the source load balancer, with the listener ports they cover, for each rule whose source is not a range (another group, a prefix list): the ranges that stand for it, or the decision that it is dropped; effect: The ranges are written on options.access_control.allowed_source_ranges after the load balancer exists (or before apply, in the draft by hand).; risk: A range written for a group source is an approximation; until the step is done the load balancer admits every client.
  3. Decide the ALB client access: Keep the load balancer on a private address only; needs the source load balancer is internal, or its clients reach it through a private network; effect: options.private_network_only makes the load balancer reachable only on a private address; it cannot be changed after creation.; regeneration: not stated — treated as required; risk: It is no client restriction: every host on the networks that reach the private address is admitted. Clients on the internet no longer reach it, and the choice is fixed at creation.; the draft is generated again with it
  4. Decide the ALB client access: Accept that more clients reach the load balancer than on the source; needs the owner's statement that the source restriction is not needed (for example a public website); effect: The draft is applied as written; the exposure widened is an accepted difference.; risk: Anything the source restricted to known clients is open to the internet.
  5. Review the LB subnets setting: Verify what the knowledge base's note asks to confirm; needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person checks the setting on the STACKIT target (or against the source, the clients and the tooling that depend on it) and records the result; nothing in the draft changes.; regeneration: not stated — treated as required; risk: A setting confirmed from the draft alone, without the check, can still differ at runtime.; the draft is generated again with it
  6. Decide who may reach the service over the network: Take the decision the knowledge base's note names and carry it out (alternatives: not stated in the knowledge base); needs the knowledge base's note on each setting (cited in this entry) and the unit's open entry in the critical-settings record of the run; effect: A person takes the decision the closing condition names and carries it out; where it changes what the draft writes, the draft is regenerated or changed by hand.; regeneration: not stated — treated as required; risk: The knowledge base states no evidenced alternatives to choose from; a decision taken without the source context the note names can change what the workload reaches, stores or exposes.; the draft is generated again with it
What closes it
Decide the ALB client access: A person confirms the carried ranges against the source rules, or decides the open client-access step, and the regenerated draft carries the result. Decide the ALB client access: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person confirms the carried ranges against the source rules, or decides the open client-access step, and the regenerated draft carries the result. Review the LB routing and addressing setting: A person decides whether the STACKIT load balancer needs an equivalent for each of them, because the STACKIT application and network load balancers have no setting for any of them (pinned provider). Review the LB subnets setting: The knowledge base states no closing condition for this setting; the run closes it when a literal value or a resolved reference in the source closes it, or when a person confirms the value. Review the LB subnets setting: A literal value or a resolved reference in the source closes it, or a person confirms the value. Decide who may reach the service over the network: A person decides whether the STACKIT load balancer is private network only; the draft picks no side and leaves a boolean variable without default and a comment, because the source's internal flag is not visible statically. Decide who may reach the service over the network: The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference. Review the request handling setting: A person confirms that the application does not depend on either behaviour: the STACKIT application load balancer has neither setting and its documentation does not state the behaviour (pinned provider), also for the AWS default values. Verification: Decide the ALB client access: a request from an address outside the allowed ranges is refused by the target load balancer, and one from inside is served; Review the LB subnets setting: the check, proof or closing evidence is recorded with its result; Decide who may reach the service over the network: the decision or the manual work is done and recorded (who, when, what was configured and why).
Next action
Decide the ALB client access: Decide the ALB client access for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ALB-AWS-LB-THIS (open critical semantic) · action: a choice between evidenced paths · decisions.json

Decision
the critical settings of a unit, of the aws.lb contract
Affected applications
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias module.retail_app_ecs.module.alb.aws_lb.this|client-restriction
  • alias module.retail_app_ecs.module.alb.aws_lb.this|lb-routing-and-addressing
  • alias module.retail_app_ecs.module.alb.aws_lb.this|lb-subnets
  • alias module.retail_app_ecs.module.alb.aws_lb.this|network-exposure
  • alias module.retail_app_ecs.module.alb.aws_lb.this|request-handling
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Decide the ALB client access (client-restriction): Open: no decision of the record has been taken. The knowledge base cannot decide "client-restriction" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Decide the ALB client access for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the LB routing and addressing setting (lb-routing-and-addressing): Open: no decision of the record has been taken. The knowledge base cannot decide "lb-routing-and-addressing" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the LB routing and addressing setting for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Review the LB subnets setting (lb-subnets): Open: no decision of the record has been taken. The knowledge base cannot decide "lb-subnets" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Verify on the target for module.retail_app_ecs.module.alb.aws_lb.this: the check, proof or closing evidence is recorded with its result.
  4. Decide who may reach the service over the network (network-exposure): Open: no decision of the record has been taken. The knowledge base cannot decide "network-exposure" of the aws.lb contract for 1 unit (carried into the draft): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Carry out the manual work the plan names for module.retail_app_ecs.module.alb.aws_lb.this outside the draft; the plan states no title for it.
  5. Review the request handling setting (request-handling): Open: no decision of the record has been taken. The knowledge base cannot decide "request-handling" of the aws.lb contract for 1 unit (left for a person to decide): a person chooses what the STACKIT target does for it, or accepts the difference. A review of this record is the architect's answer beside the engine's reading; it closes nothing. Next: Review the request handling setting for module.retail_app_ecs.module.alb.aws_lb.this, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.

63 more decisions in 8 groups

This page holds the first 50 cards. The full text of the guidance-only records (one line each above) and the other records is on the group pages, one page per work package; a link to any record leads to the page that holds its card.

Views

A record is in every view it fits; its card is in the decision centre above, shown once.

Open (113)
Blocking (11)
Before pilot (14)
Before production (0)

No record is due before production by the plan's own phase.

Accepted (0)

No record is accepted. No decisions file was given with this run.

Rejected (0)

No record is rejected. No decisions file was given with this run.

Stale (0)

No record is stale. No decisions file was given with this run, so no acceptance can have gone stale.

External evidence (0)

None in this build: this build raises no decision about procurement or external evidence (support contract, jurisdiction acceptance, certificate scope, data processing agreement, SLA, licence). This is not the same as having none.

Register list (113 records)

One row for each record of the register: 11 plan decision records, 95 critical setting records, 5 manual action records, 2 plan statement records. A row gives the record, what it is about, the units it concerns, its state, why it is open and what answers it, with links to the record’s card, to its units and to its evidence. The rows are listed under one heading for each state and cause, the states that still wait for a person first, so the page needs no script to be read by state or by cause; the index below links to each heading.

The cause of a record is the one the knowledge base gives every item of it (its table of why an item is open, read from typed fields, never from the wording of a message). A record whose items have different causes is listed as mixed causes, and its row names them. “Depends on the unit” means the cause is each unit’s own; “Not classified” means the knowledge base has no entry for the item. Neither is counted as another cause. The state is the review state of the record (the decisions file); a review changes nothing in the draft or in the engine’s reading. Where an answer is an entry of the decisions file, its key is the id of the record.

Records by state and cause (113)
StateCustomer inputTarget limitImplementation gapDepends on the unitNot classifiedMixed causesAll causes
Open1282212653113
Partly reviewed0000000
Accepted0000000
Stale0000000
Rejected0000000
Customer input
the customer holds the answer: a value or a fact of the running environment, a choice between valid target shapes, or work done outside the tool.
Target limit
STACKIT cannot carry the source behaviour, or its Terraform provider cannot express it: the difference is accepted or an alternative is chosen.
Implementation gap
StackToIT has no reader or generator for something it could carry or check: development work, not a question to the customer.
Depends on the unit
the cause is the unit's own and differs from unit to unit; the page of each unit says which.
Not classified
the knowledge base has no entry that says why this item is open; it is not assigned to any of the other causes.
Mixed causes
the members of the record have different causes; the row lists them.

Open · Customer input (12)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-AMBIGUOUS-INSTANCE-SELECTION plan decision: ambiguous instance selection (convert); 1 plan decision Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.module.alb.aws_lb.this module.retail_app_ecs.module.alb.aws_lb.this
DEC-GEN-CONVERT-API-OPT-IN plan decision: api opt in (convert); 1 plan decision Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 4: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db, module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch, module.retail_app_ecs.aws_secretsmanager_secret.mq and 1 more (listed on the record’s card) module.retail_app_ecs.aws_secretsmanager_secret.catalog_db, module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch, module.retail_app_ecs.aws_secretsmanager_secret.mq and 1 more
DEC-GEN-CONVERT-DATA-MOVEMENT plan decision: data movement (convert); 5 plan decisions Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 5: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default and 2 more (listed on the record’s card) module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default and 2 more
DEC-GEN-CONVERT-INGRESS-EXPOSURE-PATH plan decision: ingress exposure path (convert); 1 plan decision Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.module.alb.aws_lb.this module.retail_app_ecs.module.alb.aws_lb.this
DEC-GEN-CONVERT-SIZE-FROM-SOURCE plan decision: size from source (convert); 3 plan decisions Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 3: module.dependencies.aws_mq_broker.mq, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.aws_mq_broker.mq, module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default, module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-GEN-CONVERT-WORKLOAD-PLACEMENT plan decision: workload placement (convert); 1 plan decision Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.vpc.module.vpc.aws_subnet.private module.vpc.module.vpc.aws_subnet.private
DEC-OPS-MODULE-RETAIL-APP-ECS-AWS-CLOUDWATCH-LOG-GROUP-ECS-TASKS open critical semantic: the critical settings of a unit (aws.cloudwatch_log_group); 1 open critical semantic Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-INTERNET-GATEWAY-THIS open critical semantic: the critical settings of a unit (aws.internet_gateway); 1 open critical semantic Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.vpc.module.vpc.aws_internet_gateway.this No evidence drawer: none of the units has a trace in this build.
DEC-SEC-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-MQ open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.aws_secretsmanager_secret.mq module.retail_app_ecs.aws_secretsmanager_secret.mq
DEC-SEC-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-ORDERS-DB open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.aws_secretsmanager_secret.orders_db module.retail_app_ecs.aws_secretsmanager_secret.orders_db
DEC-OPS-STACKITLOGS-ACTION-LABEL-CONVENTION manual action: label convention (stackitlogs); 1 manual action Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks
DEC-OPS-STACKITLOGS-ACTION-TARGET-PRECONDITION manual action: target precondition (stackitlogs); 1 manual action Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 1: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks

Open · Target limit (8)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-ENGINE-VERSION-DOWNGRADE plan decision: engine version downgrade (convert); 1 plan decision Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this
DEC-GEN-CONVERT-POD-SEGMENTATION plan decision: pod segmentation (convert); 5 plan decisions Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 5: module.retail_app_ecs.module.carts_service.aws_security_group.this, module.retail_app_ecs.module.catalog_service.aws_security_group.this, module.retail_app_ecs.module.checkout_service.aws_security_group.this and 2 more (listed on the record’s card) module.retail_app_ecs.module.carts_service.aws_security_group.this, module.retail_app_ecs.module.catalog_service.aws_security_group.this, module.retail_app_ecs.module.checkout_service.aws_security_group.this and 2 more
DEC-OPS-STACKITLOGS-RETENTION-OVER-180-DAYS plan decision: retention_over_180_days (stackitlogs); 1 plan decision Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks
DEC-NET-STACKITROUTE-NAT-FIXED-EGRESS-ADDRESS-LOST plan decision: nat fixed egress address lost (stackitroute); 1 plan decision Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.vpc.module.vpc.aws_route_table.private module.vpc.module.vpc.aws_route_table.private
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-EIP-NAT open critical semantic: the critical settings of a unit (aws.eip); 1 open critical semantic Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.vpc.module.vpc.aws_eip.nat No evidence drawer: none of the units has a trace in this build.
DEC-IAM-MODULE-RETAIL-APP-ECS-AWS-KMS-KEY-CMK open critical semantic: the critical settings of a unit (aws.kms_key); 1 open critical semantic Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.retail_app_ecs.aws_kms_key.cmk module.retail_app_ecs.aws_kms_key.cmk
DEC-DATA-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 1 open critical semantic Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-OPS-STACKITLOGS-ACTION-ARCHIVE-FLOW manual action: archive flow (stackitlogs); 1 manual action Open Target limit An architect decision: accept the difference or choose the alternative (decisions file entry for this record); no input removes the limit 1: module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks module.retail_app_ecs.aws_cloudwatch_log_group.ecs_tasks

Open · Implementation gap (22)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.carts_service.aws_ecs_service.this module.retail_app_ecs.module.carts_service.aws_ecs_service.this
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.carts_service.aws_ecs_service.this module.retail_app_ecs.module.carts_service.aws_ecs_service.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.carts_service.aws_ecs_service.this module.retail_app_ecs.module.carts_service.aws_ecs_service.this
DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this module.retail_app_ecs.module.catalog_service.aws_ecs_service.this
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this module.retail_app_ecs.module.catalog_service.aws_ecs_service.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this module.retail_app_ecs.module.catalog_service.aws_ecs_service.this
DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this module.retail_app_ecs.module.checkout_service.aws_ecs_service.this
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this module.retail_app_ecs.module.checkout_service.aws_ecs_service.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this module.retail_app_ecs.module.checkout_service.aws_ecs_service.this
DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.orders_service.aws_ecs_service.this module.retail_app_ecs.module.orders_service.aws_ecs_service.this
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.orders_service.aws_ecs_service.this module.retail_app_ecs.module.orders_service.aws_ecs_service.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.orders_service.aws_ecs_service.this module.retail_app_ecs.module.orders_service.aws_ecs_service.this
DEC-GEN-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.ui_service.aws_ecs_service.this module.retail_app_ecs.module.ui_service.aws_ecs_service.this
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.ui_service.aws_ecs_service.this module.retail_app_ecs.module.ui_service.aws_ecs_service.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.module.ui_service.aws_ecs_service.this module.retail_app_ecs.module.ui_service.aws_ecs_service.this
DEC-SEC-MODULE-DEPENDENCIES-AWS-MQ-BROKER-MQ open critical semantic: the critical settings of a unit (aws.mq_broker); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.dependencies.aws_mq_broker.mq module.dependencies.aws_mq_broker.mq
DEC-OPS-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 2 open critical semantics Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-OPS-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-CATALOG-DB open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db module.retail_app_ecs.aws_secretsmanager_secret.catalog_db
DEC-OPS-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-CATALOG-F9E3300E open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch
DEC-OPS-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-MQ open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.aws_secretsmanager_secret.mq module.retail_app_ecs.aws_secretsmanager_secret.mq
DEC-OPS-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-ORDERS-DB open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 1 open critical semantic Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 1: module.retail_app_ecs.aws_secretsmanager_secret.orders_db module.retail_app_ecs.aws_secretsmanager_secret.orders_db
DEC-NET-STACKITROUTE-STATEMENT-NOT-DRAFTED plan statement: not drafted (stackitroute); 2 plan statements Open Implementation gap Development work on StackToIT; no customer input is asked; an architect decision (decisions file entry for this record) documents the review meanwhile 2: module.vpc.module.vpc.aws_route_table.private, module.vpc.module.vpc.aws_route_table.public module.vpc.module.vpc.aws_route_table.private, module.vpc.module.vpc.aws_route_table.public

Open · Depends on the unit (12)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-DATA-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE open critical semantic: the critical settings of a unit (aws.dynamodb_table); 3 open critical semantics Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this
DEC-OPS-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE open critical semantic: the critical settings of a unit (aws.dynamodb_table); 2 open critical semantics Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this
DEC-SEC-MODULE-DEPENDENCIES-MODULE-DYNAMODB-CARTS-AWS-DYNAMODB-2133F4BE open critical semantic: the critical settings of a unit (aws.dynamodb_table); 1 open critical semantic Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this
DEC-NET-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 open critical semantic: the critical settings of a unit (aws.elasticache); 1 open critical semantic Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default
DEC-NET-MODULE-DEPENDENCIES-AWS-MQ-BROKER-MQ open critical semantic: the critical settings of a unit (aws.mq_broker); 1 open critical semantic Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.aws_mq_broker.mq module.dependencies.aws_mq_broker.mq
DEC-NET-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 3 open critical semantics Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.catalog_rds.aws_rds_cluster.this module.dependencies.module.catalog_rds.aws_rds_cluster.this
DEC-NET-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 3 open critical semantics Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-OPS-MODULE-VPC-MODULE-VPC-AWS-SUBNET-PRIVATE open critical semantic: the critical settings of a unit (aws.subnet); 1 open critical semantic Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.vpc.module.vpc.aws_subnet.private module.vpc.module.vpc.aws_subnet.private
DEC-OPS-MODULE-VPC-MODULE-VPC-AWS-SUBNET-PUBLIC open critical semantic: the critical settings of a unit (aws.subnet); 1 open critical semantic Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.vpc.module.vpc.aws_subnet.public module.vpc.module.vpc.aws_subnet.public
DEC-SEC-STACKITSG-ACTION-INCOMPLETE manual action: incomplete (stackitsg); 2 manual actions Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix
DEC-SEC-STACKITSG-ACTION-UNPLACED manual action: unplaced (stackitsg); 2 manual actions Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 1: module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix
DEC-IAM-STACKITSA-STATEMENT-MANUAL-REVIEW plan statement: manual review (stackitsa); 5 plan statements Open Depends on the unit Depends on the unit's own reason (see the unit); an architect decision (decisions file entry for this record) documents the review 5: module.retail_app_ecs.module.carts_service.aws_ecs_service.this, module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, module.retail_app_ecs.module.checkout_service.aws_ecs_service.this and 2 more (listed on the record’s card) module.retail_app_ecs.module.carts_service.aws_ecs_service.this, module.retail_app_ecs.module.catalog_service.aws_ecs_service.this, module.retail_app_ecs.module.checkout_service.aws_ecs_service.this and 2 more

Open · Not classified (6)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-DATA-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 open critical semantic: the critical settings of a unit (aws.elasticache); 2 open critical semantics Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default
DEC-NET-MODULE-DEPENDENCIES-MODULE-CATALOG-OPENSEARCH-AWS-OPENS-0034548E open critical semantic: the critical settings of a unit (aws.opensearch); 2 open critical semantics Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this
DEC-SEC-MODULE-DEPENDENCIES-MODULE-CATALOG-OPENSEARCH-AWS-OPENS-0034548E open critical semantic: the critical settings of a unit (aws.opensearch); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this
DEC-IAM-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.catalog_rds.aws_rds_cluster.this module.dependencies.module.catalog_rds.aws_rds_cluster.this
DEC-IAM-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-OPS-MODULE-VPC-MODULE-VPC-AWS-VPC-THIS open critical semantic: the critical settings of a unit (aws.vpc); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: module.vpc.module.vpc.aws_vpc.this No evidence drawer: none of the units has a trace in this build.

Open · Mixed causes (53)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-EXPOSURE-WIDENED plan decision: exposure widened (convert); 6 plan decisions Open Mixed causes: Customer input 5, Not classified 1 Differs by member: see the causes of the row 5: module.dependencies.aws_mq_broker.mq, module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this and 2 more (listed on the record’s card) module.dependencies.aws_mq_broker.mq, module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this, module.dependencies.module.catalog_rds.aws_rds_cluster.this and 2 more
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 5 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.carts_service.aws_ecs_service.this module.retail_app_ecs.module.carts_service.aws_ecs_service.this
DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.carts_service.aws_ecs_service.this module.retail_app_ecs.module.carts_service.aws_ecs_service.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 open critical semantic: the critical settings of a unit (aws.ecs); 5 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this module.retail_app_ecs.module.catalog_service.aws_ecs_service.this
DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-ECS-SE-865F7883 open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.catalog_service.aws_ecs_service.this module.retail_app_ecs.module.catalog_service.aws_ecs_service.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 open critical semantic: the critical settings of a unit (aws.ecs); 5 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this module.retail_app_ecs.module.checkout_service.aws_ecs_service.this
DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-ECS-S-3DCDC7C6 open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.checkout_service.aws_ecs_service.this module.retail_app_ecs.module.checkout_service.aws_ecs_service.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 5 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.orders_service.aws_ecs_service.this module.retail_app_ecs.module.orders_service.aws_ecs_service.this
DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.orders_service.aws_ecs_service.this module.retail_app_ecs.module.orders_service.aws_ecs_service.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 6 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Depends on the unit 1, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.ui_service.aws_ecs_service.this module.retail_app_ecs.module.ui_service.aws_ecs_service.this
DEC-SEC-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-ECS-SERVICE-THIS open critical semantic: the critical settings of a unit (aws.ecs); 4 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.ui_service.aws_ecs_service.this module.retail_app_ecs.module.ui_service.aws_ecs_service.this
DEC-OPS-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 open critical semantic: the critical settings of a unit (aws.elasticache); 4 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 1, Depends on the unit 2 Differs by member: see the causes of the row 1: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default
DEC-SEC-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-A-D6A5B374 open critical semantic: the critical settings of a unit (aws.elasticache); 2 open critical semantics Open Mixed causes: Implementation gap 1, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.default
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-IAM-ROLE-0AE33885 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Target limit 1, Implementation gap 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-IAM-ROLE-527061DA open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Implementation gap 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.carts_service.aws_iam_role.task_role module.retail_app_ecs.module.carts_service.aws_iam_role.task_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-IAM-RO-88D16913 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Target limit 1, Implementation gap 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-IAM-RO-724FEFE1 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Implementation gap 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.catalog_service.aws_iam_role.task_role module.retail_app_ecs.module.catalog_service.aws_iam_role.task_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-IAM-R-7A7D9673 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Target limit 1, Implementation gap 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-IAM-R-C6834CB6 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Implementation gap 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.checkout_service.aws_iam_role.task_role module.retail_app_ecs.module.checkout_service.aws_iam_role.task_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-IAM-ROL-05049202 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Target limit 1, Implementation gap 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-IAM-ROL-967A9A65 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Implementation gap 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.orders_service.aws_iam_role.task_role module.retail_app_ecs.module.orders_service.aws_iam_role.task_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-IAM-ROLE-TA-E93926D0 open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Target limit 1, Implementation gap 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_role
DEC-IAM-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-IAM-ROLE-TASK-ROLE open critical semantic: the critical settings of a unit (aws.iam_role); 4 open critical semantics Open Mixed causes: Customer input 2, Implementation gap 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.ui_service.aws_iam_role.task_role module.retail_app_ecs.module.ui_service.aws_iam_role.task_role
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ALB-AWS-LB-THIS open critical semantic: the critical settings of a unit (aws.lb); 5 open critical semantics Open Mixed causes: Implementation gap 1, Depends on the unit 1, Not classified 3 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.alb.aws_lb.this module.retail_app_ecs.module.alb.aws_lb.this
DEC-OPS-MODULE-RETAIL-APP-ECS-MODULE-ALB-AWS-LB-THIS open critical semantic: the critical settings of a unit (aws.lb); 3 open critical semantics Open Mixed causes: Target limit 1, Implementation gap 1, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.alb.aws_lb.this module.retail_app_ecs.module.alb.aws_lb.this
DEC-IAM-MODULE-DEPENDENCIES-AWS-MQ-BROKER-MQ open critical semantic: the critical settings of a unit (aws.mq_broker); 2 open critical semantics Open Mixed causes: Implementation gap 1, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.aws_mq_broker.mq module.dependencies.aws_mq_broker.mq
DEC-OPS-MODULE-DEPENDENCIES-AWS-MQ-BROKER-MQ open critical semantic: the critical settings of a unit (aws.mq_broker); 3 open critical semantics Open Mixed causes: Implementation gap 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.aws_mq_broker.mq module.dependencies.aws_mq_broker.mq
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-NAT-GATEWAY-THIS open critical semantic: the critical settings of a unit (aws.nat_gateway); 3 open critical semantics Open Mixed causes: Customer input 1, Target limit 2 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_nat_gateway.this No evidence drawer: none of the units has a trace in this build.
DEC-IAM-MODULE-DEPENDENCIES-MODULE-CATALOG-OPENSEARCH-AWS-OPENS-0034548E open critical semantic: the critical settings of a unit (aws.opensearch); 7 open critical semantics Open Mixed causes: Target limit 2, Not classified 5 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this
DEC-OPS-MODULE-DEPENDENCIES-MODULE-CATALOG-OPENSEARCH-AWS-OPENS-0034548E open critical semantic: the critical settings of a unit (aws.opensearch); 4 open critical semantics Open Mixed causes: Implementation gap 1, Not classified 3 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this module.dependencies.module.catalog_opensearch.aws_opensearch_domain.this
DEC-DATA-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 2 open critical semantics Open Mixed causes: Target limit 1, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_rds.aws_rds_cluster.this module.dependencies.module.catalog_rds.aws_rds_cluster.this
DEC-OPS-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 5 open critical semantics Open Mixed causes: Implementation gap 2, Not classified 3 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_rds.aws_rds_cluster.this module.dependencies.module.catalog_rds.aws_rds_cluster.this
DEC-SEC-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 3 open critical semantics Open Mixed causes: Depends on the unit 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_rds.aws_rds_cluster.this module.dependencies.module.catalog_rds.aws_rds_cluster.this
DEC-SEC-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-RDS-CLUSTER-THIS open critical semantic: the critical settings of a unit (aws.rds_cluster); 3 open critical semantics Open Mixed causes: Depends on the unit 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.orders_rds.aws_rds_cluster.this module.dependencies.module.orders_rds.aws_rds_cluster.this
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-ROUTE-TABLE-PRIVATE open critical semantic: the critical settings of a unit (aws.route_table); 8 open critical semantics Open Mixed causes: Customer input 5, Target limit 2, Evidence gap 1 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_route_table.private module.vpc.module.vpc.aws_route_table.private
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-ROUTE-TABLE-PUBLIC open critical semantic: the critical settings of a unit (aws.route_table); 5 open critical semantics Open Mixed causes: Customer input 3, Target limit 1, Evidence gap 1 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_route_table.public module.vpc.module.vpc.aws_route_table.public
DEC-SEC-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-CATALOG-DB open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 2 open critical semantics Open Mixed causes: Customer input 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db module.retail_app_ecs.aws_secretsmanager_secret.catalog_db
DEC-SEC-MODULE-RETAIL-APP-ECS-AWS-SECRETSMANAGER-SECRET-CATALOG-F9E3300E open critical semantic: the critical settings of a unit (aws.secretsmanager_secret); 2 open critical semantics Open Mixed causes: Customer input 1, Depends on the unit 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch
DEC-NET-MODULE-DEPENDENCIES-AWS-SECURITY-GROUP-CATALOG-OPENSEARCH-SG open critical semantic: the critical settings of a unit (aws.security_group); 6 open critical semantics Open Mixed causes: Customer input 1, Target limit 2, Depends on the unit 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.aws_security_group.catalog_opensearch_sg module.dependencies.aws_security_group.catalog_opensearch_sg
DEC-NET-MODULE-DEPENDENCIES-AWS-SECURITY-GROUP-MQ open critical semantic: the critical settings of a unit (aws.security_group); 5 open critical semantics Open Mixed causes: Customer input 1, Target limit 2, Depends on the unit 1, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.aws_security_group.mq module.dependencies.aws_security_group.mq
DEC-NET-MODULE-DEPENDENCIES-MODULE-CATALOG-RDS-AWS-SECURITY-GROUP-THIS open critical semantic: the critical settings of a unit (aws.security_group); 6 open critical semantics Open Mixed causes: Customer input 1, Target limit 2, Depends on the unit 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.catalog_rds.aws_security_group.this module.dependencies.module.catalog_rds.aws_security_group.this
DEC-NET-MODULE-DEPENDENCIES-MODULE-CHECKOUT-ELASTICACHE-REDIS-M-D58733D0 open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Depends on the unit 4, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbd module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbd
DEC-NET-MODULE-DEPENDENCIES-MODULE-ORDERS-RDS-AWS-SECURITY-GROUP-THIS open critical semantic: the critical settings of a unit (aws.security_group); 6 open critical semantics Open Mixed causes: Customer input 1, Target limit 2, Depends on the unit 2, Not classified 1 Differs by member: see the causes of the row 1: module.dependencies.module.orders_rds.aws_security_group.this module.dependencies.module.orders_rds.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ALB-AWS-SECURITY-GROUP-THIS open critical semantic: the critical settings of a unit (aws.security_group); 4 open critical semantics Open Mixed causes: Customer input 1, Target limit 2, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.alb.aws_security_group.this module.retail_app_ecs.module.alb.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ALB-SG-AWS-SECURITY-GROUP-68F6B862 open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Depends on the unit 4, Not classified 1 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefix
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CARTS-SERVICE-AWS-SECURITY-6B55ABCF open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Not classified 5 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.carts_service.aws_security_group.this module.retail_app_ecs.module.carts_service.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CATALOG-SERVICE-AWS-SECURI-ACC9368F open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Not classified 5 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.catalog_service.aws_security_group.this module.retail_app_ecs.module.catalog_service.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-CHECKOUT-SERVICE-AWS-SECUR-2F7B1E2F open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Not classified 5 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.checkout_service.aws_security_group.this module.retail_app_ecs.module.checkout_service.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-ORDERS-SERVICE-AWS-SECURIT-D4CC95B3 open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Not classified 5 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.orders_service.aws_security_group.this module.retail_app_ecs.module.orders_service.aws_security_group.this
DEC-NET-MODULE-RETAIL-APP-ECS-MODULE-UI-SERVICE-AWS-SECURITY-GROUP-THIS open critical semantic: the critical settings of a unit (aws.security_group); 7 open critical semantics Open Mixed causes: Customer input 1, Target limit 1, Not classified 5 Differs by member: see the causes of the row 1: module.retail_app_ecs.module.ui_service.aws_security_group.this module.retail_app_ecs.module.ui_service.aws_security_group.this
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-SUBNET-PRIVATE open critical semantic: the critical settings of a unit (aws.subnet); 4 open critical semantics Open Mixed causes: Customer input 3, Depends on the unit 1 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_subnet.private module.vpc.module.vpc.aws_subnet.private
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-SUBNET-PUBLIC open critical semantic: the critical settings of a unit (aws.subnet); 5 open critical semantics Open Mixed causes: Customer input 4, Depends on the unit 1 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_subnet.public module.vpc.module.vpc.aws_subnet.public
DEC-NET-MODULE-VPC-MODULE-VPC-AWS-VPC-THIS open critical semantic: the critical settings of a unit (aws.vpc); 5 open critical semantics Open Mixed causes: Customer input 3, Target limit 2 Differs by member: see the causes of the row 1: module.vpc.module.vpc.aws_vpc.this No evidence drawer: none of the units has a trace in this build.

Critical settings left open, unit by unit

283 of the 319 critical semantics the units state are not resolved: a person decides each, except the 1 the draft already carries (marked confirm only below), which a person only confirms. Each is a member of a register record above (kind of record: open critical semantic, one record per contract and semantic), so the decisions file can state the architect's answer; the engine's reading in this list stays open whatever a review says. This list is read from critical_semantic_resolution.open in assurance/critical-semantics.json.

Show the 283 open critical semantics
UnitSemanticDispositionWhy it is openWhat closes itGiven by
module.dependencies.aws_mq_broker.mqbroker-networkREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. stackit_rabbitmq_instance has no subnet or security-group attribute (pinned provider): clients reach the instance at the address STACKIT assigns, restricted by parameters.sgw_acl — a person decides the ranges.A person decides which client address ranges may reach the target RabbitMQ instance through its access list, in place of the source subnets and security groups.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqbroker-usersREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Users become stackit_rabbitmq_credential entries with generated passwords; their permissions are set by a person.A person sets the permissions of each broker user on the generated RabbitMQ credentials and hands the new passwords to the clients.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqengine-versionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. stackit_rabbitmq_instance takes a STACKIT RabbitMQ version (the draft asks for it: rabbitmq_version) — which versions STACKIT offers is not in the rule's evidence.A person picks the RabbitMQ version for the target instance, since the versions STACKIT offers are not stated for this move.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqnetwork-exposureREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The broker is either reachable from the public internet or only from private networks.A person sets which networks may reach the STACKIT RabbitMQ instance with its access list (a list of CIDR networks); the draft sets none.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqtc-mq-broker-broker-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The name of the message broker. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the broker name the target uses against what refers to the source broker name, or accepts the new name.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqtc-user--passwordREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_mq_broker.user.password: The broker user's login credential; a literal secret. Held CRITICAL: it carries or names a credential; the value is never copied and a person re-creates it on the target. No semantic of this family has verified it as carried.A person hands the clients the password of the generated target credential instead of the literal in the source.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqtc-user--usernameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_mq_broker.user.username: The broker user's login identity. Held CRITICAL: it decides who or what may use, read or change the resource or the data behind it. No semantic of this family has verified it as carried.A person confirms the user names the clients log in with; STACKIT generates each RabbitMQ credential's username, so the clients move to the new usernames.the mapping rule for aws_mq_broker
module.dependencies.aws_mq_broker.mqtcp-deployment-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_mq_broker.deployment_mode: The family's own setting for high availability already reads this as critical: it selects single instance vs. active standby multi az vs. cluster multi az, i.e. whether the broker survives an AZ failure at all. Held CRITICAL: it decides capacity, delivery guarantees, retry or failure handling that consumers depend on.A person decides whether the target must survive a zone failure as the source deployment mode did, and finds out which RabbitMQ plan, if any, gives that, since the zone spread of the plans is not stated.the mapping rule for aws_mq_broker
module.dependencies.aws_security_group.catalog_opensearch_sgegress-restrictionREVIEWA check of the knowledge base (sg egress restricted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The security group restricts its outbound traffic: it has no rule that allows every protocol to 0.0.0.0/0 or ::/0.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg egress restricted)
module.dependencies.aws_security_group.catalog_opensearch_sgnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.dependencies.aws_security_group.catalog_opensearch_sgsecurity-group-vpc-membershipUNSUPPORTEDThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.dependencies.aws_security_group.catalog_opensearch_sgstandalone-rule-not-generatedREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An aws_security_group_rule the draft does not generate (the draft names its settings NOT CARRIED, or the KB cannot decide that it generates it): a prefix list, an ICMP type with every code, ICMPv6 limited by type or code, a protocol with no STACKIT counterpart, a source or protocol or port not visible statically, a source group that is not one whole reference to a security group of the draft, or a repeated or conditionally created group. A person re-creates the rule with the STACKIT range or group it needs (a rule is never widened: a stackit_security_group_rule without source allows every address, pinned provider) - REVIEW, per rule.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_security_group
module.dependencies.aws_security_group.catalog_opensearch_sgstandalone-rule-remote-not-resolvedREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The source of a standalone security group rule: the other security group (source_security_group_id) whose members the rule lets in.This draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A person re-creates the rule with the STACKIT security group or address range it needs; the draft does not widen it (a stackit_security_group_rule without a source allows everything, pinned provider).the mapping rule for aws_security_group
module.dependencies.aws_security_group.catalog_opensearch_sgstatefulREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: UNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.dependencies.aws_security_group.mqegress-restrictionREVIEWA check of the knowledge base (sg egress restricted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The security group restricts its outbound traffic: it has no rule that allows every protocol to 0.0.0.0/0 or ::/0.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg egress restricted)
module.dependencies.aws_security_group.mqnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.dependencies.aws_security_group.mqsecurity-group-vpc-membershipUNSUPPORTEDThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.dependencies.aws_security_group.mqstandalone-rule-not-generatedREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An aws_security_group_rule the draft does not generate (the draft names its settings NOT CARRIED, or the KB cannot decide that it generates it): a prefix list, an ICMP type with every code, ICMPv6 limited by type or code, a protocol with no STACKIT counterpart, a source or protocol or port not visible statically, a source group that is not one whole reference to a security group of the draft, or a repeated or conditionally created group. A person re-creates the rule with the STACKIT range or group it needs (a rule is never widened: a stackit_security_group_rule without source allows every address, pinned provider) - REVIEW, per rule.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_security_group
module.dependencies.aws_security_group.mqstatefulREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: UNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisaccess-and-encryption-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The access policy, free-form engine options, fine-grained access switches, encryption at rest and between nodes, the HTTPS and TLS policy of the endpoint and the engine version of the domain, read wherever they are set.A person maps each setting to the STACKIT OpenSearch instance, which has an access list, TLS protocols and ciphers and a version, but no policy document, no free-form option map and no encryption switch (pinned provider).the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thiscluster-layout-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Every node-layout setting of the domain, read where it is set whatever its value (on, off, empty, a variable, a reference, a block written as an attribute object): instance count, dedicated masters, warm and cold storage, zone awareness and its zone count, multi-AZ with standby and the deployment strategy. A stackit_opensearch_instance takes a plan (plan_name) that fixes nodes, topology and storage, no zone-awareness or tier setting (pinned provider, the provider documentation of opensearch_instance) - REVIEW: a person picks the plan that matches the layout.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thiscredentials-and-keys-settingsUNSUPPORTEDThe mapping rule for this kind of unit found a setting the target has no counterpart for. The IAM master user, the master user name and password, the customer KMS key and the custom endpoint certificate, read where they are set whatever their value. STACKIT generates the OpenSearch credential (stackit_opensearch_credential username and password are computed), offers no customer KMS key for the instance and no custom endpoint certificate (pinned provider) - UNSUPPORTED; a password is never carried.A person accepts the difference or the design changes: nothing in the source can make the target carry it.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisdomain-credentials-and-keysUNSUPPORTEDThe mapping rule for this kind of unit found a setting the target has no counterpart for. STACKIT generates the OpenSearch credential (stackit_opensearch_credential username and password are computed), offers no customer KMS key for the instance and no custom endpoint certificate (pinned provider) — UNSUPPORTED.A person accepts the difference or the design changes: nothing in the source can make the target carry it.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisdomain-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. stackit_opensearch_instance takes a plan (plan_name: nodes and storage), a version and parameters (sgw_acl, syslog, tls_protocols, tls_ciphers, etc.; pinned provider): the domain's node layout, zone awareness, storage, access policy, endpoint TLS and HTTPS settings, internal user database and log publishing are not generated — a person maps them to the plan and parameters — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisencryption-at-restREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states whether the data the domain stores is encrypted at rest.A person confirms the encryption of the STACKIT OpenSearch instance on the target; the instance has no encryption setting (pinned provider), and no STACKIT fact about it is documented here.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisengine-versionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states which engine and version the OpenSearch domain runs: OpenSearch or legacy Elasticsearch, with its version number.A person chooses the version of the STACKIT OpenSearch instance, which has a version setting (pinned provider), and checks that the domain's clients work with it.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisfine-grained-accessREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states whether fine-grained access control, with users, roles and permissions inside the domain, is switched on.A person re-creates the access rules another way, because fine-grained IAM access has no equivalent on STACKIT OpenSearch, which offers an access list and credentials per instance.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisnbr-aws-opensearch-domain-policyREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_opensearch_domain_policy (search access policy) attaches an access policy to this domain, so who may reach and use it is decided by that policy and not by the domain's own settings.A person reads the policy the neighbour attaches and confirms that the replacing OpenSearch domain lets the same principals act on it, and no more, or that the access is dropped on purpose.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisnetwork-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The VPC placement of the domain (subnet and security group ids, IP address type), read where it is set whatever its value. stackit_opensearch_instance has no network or subnet input; its access control is parameters.sgw_acl, a CIDR list (pinned provider) - REVIEW: a person translates the reachable networks into sgw_acl.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisopensearch-domain-policy-resourceREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The domain's resource-based access policy, written as aws_opensearch_domain_policy (a part of the domain), has no counterpart on STACKIT OpenSearch.A person lists the principals and conditions the policy names, decides how their separation is kept (one instance per trust level, or in the application) and puts the source ranges into sgw_acl.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisprivate-endpointREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states whether the domain lives inside a VPC, with subnets and security groups, instead of behind a public endpoint.A person translates the networks that may reach the domain into the access list (a list of CIDR ranges) of the STACKIT OpenSearch instance, which has no network or subnet input (pinned provider).the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thisstorage-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states whether the data nodes use EBS volumes, read where it is set whatever its value. Storage of a stackit_opensearch_instance is defined by its plan (pinned provider, the provider documentation of opensearch_instance): no EBS switch - REVIEW: a person picks a plan whose disk fits the index size.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_opensearch.aws_opensearch_domain.thistc-opensearch-domain-domain-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_opensearch_domain.domain_name: Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract). No semantic of this family has verified it as carried.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_opensearch_domain
module.dependencies.module.catalog_rds.aws_rds_cluster.thisadmin-passwordREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The source password (or its Secrets Manager management) is never copied, and no STACKIT database user takes a password: stackit_postgresflex_user and stackit_mariadb_credential compute it (password is computed and sensitive, pinned provider) and the create-user API of PostgreSQL Flex has no password field.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisadmin-username-not-carriedREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The master username is not a literal of a single cluster that PostgreSQL Flex accepts: a name a variable supplies or that is not visible statically (the draft writes the user with a variable that has no default), a name STACKIT reserves (admin and postgres: the draft writes a variable that rejects them), or a repeated cluster (a user per cluster only when every instance is evaluated). A person chooses the administrator's name on the target — REVIEW.A person creates the administrator on the target with a name the target accepts and confirms the application connects with it.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisbackup-retentionLEDGERWhether the draft carries this setting is decided by its semantic ledger entry "backup retention", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). A retention not visible statically (a variable) is read by no fact and the draft carries nothing for it: a person compares it with the target's backup retention (REVIEW).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:backup retention
module.dependencies.module.catalog_rds.aws_rds_cluster.thisdb-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no subnet, availability-zone or IP-family attribute (pinned provider): clients reach it at the endpoint STACKIT assigns, restricted by its ACL — a person decides how clients reach it — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisengineREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The database engine of the cluster (Aurora PostgreSQL, Aurora MySQL, or a Multi-AZ cluster on PostgreSQL or MySQL), which decides the STACKIT database service it lands on.For a MySQL-compatible cluster a person tests the schemas and queries on STACKIT MariaDB, the closest managed engine, because STACKIT has no MySQL product; for a PostgreSQL cluster, which lands on PostgreSQL Flex, a person confirms that no Aurora-only feature (storage auto-scaling, fast clones, global databases, serverless v2 scaling) is relied on.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisengine-versionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The version of the database engine that the cluster runs.For a PostgreSQL cluster a person picks a major version that PostgreSQL Flex offers (14 to 18; 18 is beta in eu01, so production needs 17 or a generally available 18) and plans an upgrade for any other version. For a MySQL-compatible cluster a person tests the MySQL 8 features in use on STACKIT MariaDB.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisfinal-snapshotREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no final snapshot or delete-time backup setting (pinned provider): it is deleted when Terraform destroys it — a person decides how data survives a destroy (export first) — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thismember-engineREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Cluster members must run the cluster's engine and version (AWS), which the draft follows (TODO when a member states another): the members' engine and version are what the cluster's engine and the engine version setting decide — TRANSFORMED/PRESERVED for a supported PostgreSQL version, REVIEW otherwise.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thismember-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Cluster members are not separate STACKIT resources (the flavor defines the nodes, pinned provider): a member's failover priority, parameter group, subnet group, zone, CA certificate and Performance Insights key have no attribute — a person decides what the nodes need — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisparameter-and-option-groupsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no parameter-group or option-group attribute (pinned provider): the group's settings (even a default.* group of the source engine) must be mapped to the STACKIT instance's options by a person — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thissecurity-groupsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT database instances have no security groups: access is a CIDR ACL (network.acl, pinned provider); the draft's ACL variable defaults to the CIDRs of the groups' ingress rules where visible, and group-to-group rules cannot be expressed — a person checks the ACL — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thisstorage-encryptionREVIEWA check of the knowledge base (aurora storage encrypted mariadb) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states whether the storage of the database cluster is encrypted at rest, with the AWS-managed key because no customer key is named.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person confirms the at-rest encryption of the target database on STACKIT: the PostgreSQL Flex encryption block covers customer keys only and the default without it is not stated, and a MariaDB sandbox instance had database-level encryption off, so whether its volumes are encrypted is not stated (pinned provider).a check of the knowledge base (aurora storage encrypted mariadb)
module.dependencies.module.catalog_rds.aws_rds_cluster.thistc-database-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_rds_cluster.database_name: Name of the initial database created in the cluster; application setup. No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_rds_cluster.thistcf-rds-cluster-instance--identifierREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_rds_cluster_instance.identifier (a facet of the unit): Name of the instance; it identifies the resource and changes no access, encryption, backup or availability behaviour. No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.catalog_rds.aws_security_group.thisegress-restrictionREVIEWA check of the knowledge base (sg egress restricted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The security group restricts its outbound traffic: it has no rule that allows every protocol to 0.0.0.0/0 or ::/0.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg egress restricted)
module.dependencies.module.catalog_rds.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.catalog_rds.aws_security_group.thisrule-portsREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.catalog_rds.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.catalog_rds.aws_security_group.thisstandalone-rule-valuesREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). An aws_security_group_rule becomes a stackit_security_group_rule: type → direction, protocol → protocol, cidr_blocks → ip_range (one rule per range), source_security_group_id → remote_security_group_id. A rule that is not generated is named NOT CARRIED and the group is REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.catalog_rds.aws_security_group.thisstatefulREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: UNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultat-rest-encryption-offREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. No at-rest encryption in the source; stackit_valkey_instance states nothing about at-rest encryption (pinned provider) — REVIEW, not PRESERVED.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultfailover-offREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A single node without failover: the draft asks for the plan (plan_name is a variable), so whether the target is a Single plan is a person's choice — REVIEW, not PRESERVED.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultnetwork-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. stackit_valkey_instance has no subnet, security-group, zone or IP-family attribute; client access can be limited by CIDR with parameters.sgw_acl, which the draft does not generate — a person decides it.A person decides how clients reach the Valkey instance, which has no subnet or security-group setting, for example by limiting client CIDR ranges with its access parameter.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultparameter-groupREVIEWA check of the knowledge base (redis parameter group) needs a value the scan cannot read statically, so it could not decide. The setting states which custom set of engine parameters (a parameter group) the cache runs with.A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.a check of the knowledge base that the source cannot settle (redis parameter group)
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultparameter-group-defaultREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A parameter group named default.<family> carries the AWS default settings of that engine family and version, and its name can carry the topology: a group with cluster.on in its name enables cluster mode.A person confirms that the defaults of the source parameter group family are what the application needs on the target and, for a cluster-mode group, treats it as the cluster-mode question.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultseed-snapshotREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The instance is created empty: the data is migrated by a person (RDB export and import, or replication); stackit_valkey_instance and stackit_redis_instance have no snapshot or restore attribute (pinned provider). snapshot_arns is observed for every set value, an empty list included: the draft names snapshot_arns NOT CARRIED even when it is empty; a conditional with a null branch stays undecided, hence REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaultsnapshots-offREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. No snapshots in the source; whether a STACKIT Valkey instance takes snapshots by default (parameters.snapshot, not generated) is not documented — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaulttc-elasticache-replication-group-replication-group-idREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The identifier of the cache replication group. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the instance name the target uses against what refers to the replication group id, or accepts the new name.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.aws_elasticache_replication_group.defaulttcp-elasticache-replication-group-transit-encryption-enabledREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_elasticache_replication_group.transit_encryption_enabled: Encryption in transit (TLS) between clients and the cache; losing it sends data and AUTH in clear. Held CRITICAL: it decides whether and with which key data or metadata is encrypted; dropping it silently could leave data unencrypted on the target.A person confirms that clients reach the cache over TLS on the target, so that data and the authentication token are not sent in clear.the mapping rule for aws_elasticache_replication_group
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdrule-portsREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdsecurity-group-vpc-membershipUNSUPPORTEDThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdstandalone-rule-empty-sourcesREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). self = false and empty IPv6/prefix-list lists (module defaults) add no source, as the drafted rule adds none — PRESERVED, per rule that states no source, next to rules that do (those are standalone rule other sources, REVIEW); REVIEW when a rule of the group is not generated (its settings are named NOT CARRIED, the rule not generated check) or a value is not visible statically: the draft names such a value NOT CARRIED and nothing here claims it carried.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdstandalone-rule-other-sourcesREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). A standalone rule's own group (self) and IPv6 ranges are written where the draft places the rule (self as remote_security_group_id of the group, an IPv6 range as ip_range with ether_type IPv6), and the draft names the rule NOT CARRIED when the plan withholds it; prefix lists are not generated (as rule other sources for inline rules; prefix lists: the prefix list check), and a person adds the rule if the traffic must pass — REVIEW in every order position.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdstandalone-rule-valuesREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). An aws_security_group_rule becomes a stackit_security_group_rule: type → direction, protocol → protocol, cidr_blocks → ip_range (one rule per range), source_security_group_id → remote_security_group_id. A rule that is not generated is named NOT CARRIED and the group is REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.checkout_elasticache_redis.module.aws_security_group.aws_security_group.cbdstatefulREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: UNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thisencryption-at-restREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. It is not stated in stackit_mongodbflex_instance (no encryption attribute) whether STACKIT MongoDB Flex encrypts data at rest: REVIEW (the customer managed key setting reads the key).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_dynamodb_table
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thisindex-projection-and-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The projection of a secondary index (keys only, INCLUDE with its non_key_attributes, ALL) decides which attributes an index query can return, and the index name is what every Query / Scan on the index selects it by (API Query IndexName). STACKIT has no provider resource for an index (pinned provider), a person re-creates the indexes and the queries that name them in the chosen engine — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_dynamodb_table
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thiskey-schemaREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The draft names the partition/sort key as the collection's unique index; the data model is rewritten by people.A person designs the keys and indexes of the replacement collection (partition and sort key, attribute names and types, secondary index keys), because the draft names only the key as the collection's unique index.the mapping rule for aws_dynamodb_table
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thispoint-in-time-recoveryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. MongoDB Flex has a point-in-time window in hours (options.point_in_time_window_hours); its maximum is not documented in the provider schema. The draft carries no value for it.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_dynamodb_table
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thistc-dynamodb-table-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_dynamodb_table.name: Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract). No semantic of this family has verified it as carried.A person confirms the name the replacement collection carries on the target against what refers to the source name, or accepts the new name.the mapping rule for aws_dynamodb_table
module.dependencies.module.dynamodb_carts.aws_dynamodb_table.thisttlREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. DynamoDB TTL reads epoch seconds; a MongoDB TTL index expires only BSON dates, so the attribute changes type. The time-to-live check still fires only for enabled = true; the case handler REVIEW covers the other states.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_dynamodb_table
module.dependencies.module.orders_rds.aws_rds_cluster.thisadmin-passwordREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The source password (or its Secrets Manager management) is never copied, and no STACKIT database user takes a password: stackit_postgresflex_user and stackit_mariadb_credential compute it (password is computed and sensitive, pinned provider) and the create-user API of PostgreSQL Flex has no password field.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thisadmin-username-not-carriedREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The master username is not a literal of a single cluster that PostgreSQL Flex accepts: a name a variable supplies or that is not visible statically (the draft writes the user with a variable that has no default), a name STACKIT reserves (admin and postgres: the draft writes a variable that rejects them), or a repeated cluster (a user per cluster only when every instance is evaluated). A person chooses the administrator's name on the target — REVIEW.A person creates the administrator on the target with a name the target accepts and confirms the application connects with it.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thisdb-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no subnet, availability-zone or IP-family attribute (pinned provider): clients reach it at the endpoint STACKIT assigns, restricted by its ACL — a person decides how clients reach it — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thisfinal-snapshotREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no final snapshot or delete-time backup setting (pinned provider): it is deleted when Terraform destroys it — a person decides how data survives a destroy (export first) — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thismember-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Cluster members are not separate STACKIT resources (the flavor defines the nodes, pinned provider): a member's failover priority, parameter group, subnet group, zone, CA certificate and Performance Insights key have no attribute — a person decides what the nodes need — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thisparameter-and-option-groupsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The STACKIT database resource has no parameter-group or option-group attribute (pinned provider): the group's settings (even a default.* group of the source engine) must be mapped to the STACKIT instance's options by a person — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thissecurity-groupsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT database instances have no security groups: access is a CIDR ACL (network.acl, pinned provider); the draft's ACL variable defaults to the CIDRs of the groups' ingress rules where visible, and group-to-group rules cannot be expressed — a person checks the ACL — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thisstorage-encryptionREVIEWA check of the knowledge base (aurora storage encrypted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states whether the storage of the database cluster is encrypted at rest, with the AWS-managed key because no customer key is named.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person confirms the at-rest encryption of the target database on STACKIT: the PostgreSQL Flex encryption block covers customer keys only and the default without it is not stated, and a MariaDB sandbox instance had database-level encryption off, so whether its volumes are encrypted is not stated (pinned provider).a check of the knowledge base (aurora storage encrypted)
module.dependencies.module.orders_rds.aws_rds_cluster.thistc-database-nameREVIEW
confirm only: the draft already carries it, by TF/stackit_postgresflex_database.dependencies_orders_rds_this_orders (TERRAFORM): the source `database_name` = `orders` is written as `name` = `orders` by the draft (`terraform/data.tf`, block `stackit_postgresflex_database.dependencies_orders_rds_this_orders`): the value is the source's, the connection strings of the application that name the database are a person's to confirm
The mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_rds_cluster.database_name: Name of the initial database created in the cluster; application setup. No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_rds_cluster.thistcf-rds-cluster-instance--identifierREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_rds_cluster_instance.identifier (a facet of the unit): Name of the instance; it identifies the resource and changes no access, encryption, backup or availability behaviour. No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_rds_cluster
module.dependencies.module.orders_rds.aws_security_group.thisegress-restrictionREVIEWA check of the knowledge base (sg egress restricted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The security group restricts its outbound traffic: it has no rule that allows every protocol to 0.0.0.0/0 or ::/0.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg egress restricted)
module.dependencies.module.orders_rds.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.orders_rds.aws_security_group.thisrule-portsREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.orders_rds.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.dependencies.module.orders_rds.aws_security_group.thisstandalone-rule-valuesREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: A check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). An aws_security_group_rule becomes a stackit_security_group_rule: type → direction, protocol → protocol, cidr_blocks → ip_range (one rule per range), source_security_group_id → remote_security_group_id. A rule that is not generated is named NOT CARRIED and the group is REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.dependencies.module.orders_rds.aws_security_group.thisstatefulREVIEWThis draft writes no stackit_security_group, stackit_security_group_rule for this unit: every unit that names the group is a managed data service of STACKIT, which has no security group and takes its clients from an access list of its own, so the group is listed by no resource and what it admitted reaches those access lists as addresses only. What follows states the knowledge base's candidate target, not a block of this draft: UNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.aws_cloudwatch_log_group.ecs_taskstc-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_cloudwatch_log_group.name is the address a log producer writes to (awslogs-group, PutLogEvents logGroupName). The name is therefore not carried by anything the draft generates, and no producer is rewired: a person decides the label convention and reconfigures each producer - REVIEW (the plan holds it as a label convention manual action). Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person decides the label convention under which the log group name survives in STACKIT Logs and reconfigures each producer to send it; the draft configures no shipper.the mapping rule for aws_cloudwatch_log_group
module.retail_app_ecs.aws_kms_key.cmkdeletion-windowREVIEWA check of the knowledge base (kms deletion window) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). STACKIT KMS deletes a key scheduled for deletion after 30 days (docs create-and-manage-keys, 'Delete a key'), with no setting: 30 is PRESERVED, another window REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (kms deletion window)
module.retail_app_ecs.aws_secretsmanager_secret.catalog_dbcustomer-managed-keyREVIEWA check of the knowledge base (secret cmk) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Critical and reading the key since 2026-09-27: the draft names it NOT CARRIED, except where it sets the instance's kms_key (below). The AWS key does not move, AWS's key per secret has no per-secret counterpart, and the draft sets the kms_key block (referencing the drafted STACKIT key) only when every source of the shared instance is an AWS secret that references that one key — otherwise it names the key NOT CARRIED with the reason; either way a person decides (REVIEW, see the customer-managed key check).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (secret cmk)
module.retail_app_ecs.aws_secretsmanager_secret.catalog_dbsecret-valueREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The value moves to STACKIT Secrets Manager (Vault-compatible KV). The draft generates the shared instance, and the plan a WriteSecret step for an aws_secretsmanager_secret or a SecureString aws_ssm_parameter that is not repeated. The step writes the document the person supplies and does not carry this setting (the value is the person's document); for a secret repeated by count or for_each whose instances are not all known, and for a parameter whose type is not the literal SecureString, only the instance is generated. What a person decides, per secret: where the value comes from (the same value fetched from a secure source, or a new one — moving is the moment to rotate) and the Vault path the application will read, then writes it with the Vault provider or CLI — REVIEW. History: added with aws_ssm_parameter on 2026-09-24; REVIEW since 2026-09-27 (was TRANSFORMED); 2026-10-29 the wording names the WriteSecret step of the plan; 2026-10-30 the step is also made for a SecureString parameter.A person decides per secret where the value comes from (the same value from a secure source, or a new one) and the Vault path the application reads, then writes it with a Vault KV v2 client.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.catalog_dbtc-secretsmanager-secret-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_secretsmanager_secret.name: Friendly name used to address the secret; losing it breaks lookups by name but does not change who may reach or read the value, its encryption or deletion behaviour (IAM statements that scope by name are assessed on the IAM policy). No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the secret name or path the application looks up on the target, or accepts the new one.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearchcustomer-managed-keyREVIEWA check of the knowledge base (secret cmk) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Critical and reading the key since 2026-09-27: the draft names it NOT CARRIED, except where it sets the instance's kms_key (below). The AWS key does not move, AWS's key per secret has no per-secret counterpart, and the draft sets the kms_key block (referencing the drafted STACKIT key) only when every source of the shared instance is an AWS secret that references that one key — otherwise it names the key NOT CARRIED with the reason; either way a person decides (REVIEW, see the customer-managed key check).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (secret cmk)
module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearchsecret-valueREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The value moves to STACKIT Secrets Manager (Vault-compatible KV). The draft generates the shared instance, and the plan a WriteSecret step for an aws_secretsmanager_secret or a SecureString aws_ssm_parameter that is not repeated. The step writes the document the person supplies and does not carry this setting (the value is the person's document); for a secret repeated by count or for_each whose instances are not all known, and for a parameter whose type is not the literal SecureString, only the instance is generated. What a person decides, per secret: where the value comes from (the same value fetched from a secure source, or a new one — moving is the moment to rotate) and the Vault path the application will read, then writes it with the Vault provider or CLI — REVIEW. History: added with aws_ssm_parameter on 2026-09-24; REVIEW since 2026-09-27 (was TRANSFORMED); 2026-10-29 the wording names the WriteSecret step of the plan; 2026-10-30 the step is also made for a SecureString parameter.A person decides per secret where the value comes from (the same value from a secure source, or a new one) and the Vault path the application reads, then writes it with a Vault KV v2 client.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearchtc-secretsmanager-secret-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_secretsmanager_secret.name: Friendly name used to address the secret; losing it breaks lookups by name but does not change who may reach or read the value, its encryption or deletion behaviour (IAM statements that scope by name are assessed on the IAM policy). No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the secret name or path the application looks up on the target, or accepts the new one.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.mqsecret-valueREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The value moves to STACKIT Secrets Manager (Vault-compatible KV). The draft generates the shared instance, and the plan a WriteSecret step for an aws_secretsmanager_secret or a SecureString aws_ssm_parameter that is not repeated. The step writes the document the person supplies and does not carry this setting (the value is the person's document); for a secret repeated by count or for_each whose instances are not all known, and for a parameter whose type is not the literal SecureString, only the instance is generated. What a person decides, per secret: where the value comes from (the same value fetched from a secure source, or a new one — moving is the moment to rotate) and the Vault path the application will read, then writes it with the Vault provider or CLI — REVIEW. History: added with aws_ssm_parameter on 2026-09-24; REVIEW since 2026-09-27 (was TRANSFORMED); 2026-10-29 the wording names the WriteSecret step of the plan; 2026-10-30 the step is also made for a SecureString parameter.A person decides per secret where the value comes from (the same value from a secure source, or a new one) and the Vault path the application reads, then writes it with a Vault KV v2 client.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.mqtc-secretsmanager-secret-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_secretsmanager_secret.name: Friendly name used to address the secret; losing it breaks lookups by name but does not change who may reach or read the value, its encryption or deletion behaviour (IAM statements that scope by name are assessed on the IAM policy). No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the secret name or path the application looks up on the target, or accepts the new one.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.orders_dbsecret-valueREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The value moves to STACKIT Secrets Manager (Vault-compatible KV). The draft generates the shared instance, and the plan a WriteSecret step for an aws_secretsmanager_secret or a SecureString aws_ssm_parameter that is not repeated. The step writes the document the person supplies and does not carry this setting (the value is the person's document); for a secret repeated by count or for_each whose instances are not all known, and for a parameter whose type is not the literal SecureString, only the instance is generated. What a person decides, per secret: where the value comes from (the same value fetched from a secure source, or a new one — moving is the moment to rotate) and the Vault path the application will read, then writes it with the Vault provider or CLI — REVIEW. History: added with aws_ssm_parameter on 2026-09-24; REVIEW since 2026-09-27 (was TRANSFORMED); 2026-10-29 the wording names the WriteSecret step of the plan; 2026-10-30 the step is also made for a SecureString parameter.A person decides per secret where the value comes from (the same value from a secure source, or a new one) and the Vault path the application reads, then writes it with a Vault KV v2 client.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.aws_secretsmanager_secret.orders_dbtc-secretsmanager-secret-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_secretsmanager_secret.name: Friendly name used to address the secret; losing it breaks lookups by name but does not change who may reach or read the value, its encryption or deletion behaviour (IAM statements that scope by name are assessed on the IAM policy). No semantic of this family has verified it as carried. Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract).A person confirms the secret name or path the application looks up on the target, or accepts the new one.the mapping rule for aws_secretsmanager_secret
module.retail_app_ecs.module.alb.aws_lb.thisclient-restrictionREVIEWA check of the knowledge base (lb security groups) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Who may reach the load balancer, read from the ingress rules of the security groups that filter its clients. A group reference, a prefix list, an IPv6 range or a variable is not carried: the plan lists the clients the target would block and adds the client-access manual step for the Security Architect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person confirms the carried ranges against the source rules, or decides the open client-access step, and the regenerated draft carries the result.a check of the knowledge base (lb security groups)
module.retail_app_ecs.module.alb.aws_lb.thislb-connection-timeoutsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_lb.idle_timeout and client_keep_alive (aws 6.66.0): how long the load balancer lets a client connection idle and how long it keeps it open. The STACKIT application load balancer has no such attribute and the draft does not carry them - REVIEW: a person decides whether the applications behind the load balancer (long polling, streaming, WebSockets, slow requests) cope with the STACKIT default. aws_alb, the alias type, is not read here.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_lb.thislb-routing-and-addressingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states how the load balancer answers DNS for clients (Availability Zone affinity), whether it still forwards to targets when AWS WAF cannot be reached (fail open), zonal shift, customer-owned address pools and IPv6 source NAT prefixes.A person decides whether the STACKIT load balancer needs an equivalent for each of them, because the STACKIT application and network load balancers have no setting for any of them (pinned provider).the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_lb.thislb-subnetsREVIEWThe value is not visible statically (a case of the mapping rule for this kind of unit), so nothing is credited for it. The load balancer takes the network of its one converted subnet (networks.network_id; several subnets are lb subnets several, REVIEW): STACKIT networks are regional, one network holds what the source spread over zonal subnets.A literal value or a resolved reference in the source closes it, or a person confirms the value.the value could not be read; the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_lb.thisnetwork-exposureLEDGERWhether the draft carries this setting is decided by its semantic ledger entry "network exposure", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). internal not visible statically (a variable): the source states no exposure and the draft carries nothing for it; a person decides whether the STACKIT load balancer is private_network_only (REVIEW).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:network exposure
module.retail_app_ecs.module.alb.aws_lb.thisrequest-handlingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states how the load balancer treats HTTP requests that may carry a request-smuggling (desync) risk, and how it rewrites the X-Forwarded-For header before the target sees it.A person confirms that the application does not depend on either behaviour: the STACKIT application load balancer has neither setting and its documentation does not state the behaviour (pinned provider), also for the AWS default values.the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_lb.thisrequest-header-optionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states which extra headers the load balancer adds to the request the target receives (TLS version and cipher suite, the client port in X-Forwarded-For) and whether it keeps the original Host header.A person decides, for each setting, what the STACKIT load balancer or the application does instead, because the STACKIT application load balancer has no setting that adds, rewrites or renames a request header towards its targets (pinned provider).the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_lb.thistc-lb-nameREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. aws_lb.name: Held CRITICAL: the workload, its clients or its neighbours rely on it (an address, a name, a protocol or an execution contract). No semantic of this family has verified it as carried.A person confirms the name the load balancer carries on the target against what refers to the source name, or accepts the new name.the mapping rule for aws_lb
module.retail_app_ecs.module.alb.aws_security_group.thisegress-restrictionREVIEWA check of the knowledge base (sg egress restricted) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The security group restricts its outbound traffic: it has no rule that allows every protocol to 0.0.0.0/0 or ::/0.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg egress restricted)
module.retail_app_ecs.module.alb.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.alb.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.alb.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixrule-portsREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixsecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixstandalone-rule-empty-sourcesREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). self = false and empty IPv6/prefix-list lists (module defaults) add no source, as the drafted rule adds none — PRESERVED, per rule that states no source, next to rules that do (those are standalone rule other sources, REVIEW); REVIEW when a rule of the group is not generated (its settings are named NOT CARRIED, the rule not generated check) or a value is not visible statically: the draft names such a value NOT CARRIED and nothing here claims it carried.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixstandalone-rule-other-sourcesREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). A standalone rule's own group (self) and IPv6 ranges are written where the draft places the rule (self as remote_security_group_id of the group, an IPv6 range as ip_range with ether_type IPv6), and the draft names the rule NOT CARRIED when the plan withholds it; prefix lists are not generated (as rule other sources for inline rules; prefix lists: the prefix list check), and a person adds the rule if the traffic must pass — REVIEW in every order position.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixstandalone-rule-valuesREVIEWA check of the knowledge base (sg rule not rendered) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). An aws_security_group_rule becomes a stackit_security_group_rule: type → direction, protocol → protocol, cidr_blocks → ip_range (one rule per range), source_security_group_id → remote_security_group_id. A rule that is not generated is named NOT CARRIED and the group is REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (sg rule not rendered)
module.retail_app_ecs.module.alb_sg.aws_security_group.this_name_prefixstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-connect-valuesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-desired-countREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-discoveryREVIEWA check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE.a check of the knowledge base (ecs service discovery)
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-execute-commandREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-public-ip-settingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thisservice-task-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistask-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-container-definitionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this (aws_dynamodb_table) through this setting (the target does not carry it: it is in the class redesign), so what the reference becomes is part of this setting.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-container-image-registryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-container-plaintext-secret-envREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-container-secret-referencesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-execution-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-network-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_ecs_service.thistd-task-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_roleiam-managed-ecsREVIEWA check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed ecs)
module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.carts_service.aws_iam_role.task_execution_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.carts_service.aws_iam_role.task_roleiam-managed-customer-policyREVIEWA check of the knowledge base (iam managed customer policy) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). This attachment names a customer-managed policy of this estate (an aws_iam_policy), not an AWS-managed one. What to decide: the roles of this role's service account from the findings of every policy attached here, and whether one policy shared by several roles becomes one set of role assignments or several.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed customer policy)
module.retail_app_ecs.module.carts_service.aws_iam_role.task_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.carts_service.aws_iam_role.task_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person. The unit names module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this (aws_dynamodb_table) through this setting (the target does not carry it: it is in the class redesign), so what the reference becomes is part of this setting.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.carts_service.aws_iam_role.task_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.carts_service.aws_security_group.thisegress-rule-protocolREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. protocol → stackit_security_group_rule.protocol (pinned provider). the egress restriction setting reads the same attribute and is REVIEW exactly when the egress restriction check fires; this semantic is then REVIEW as well, so the two critical readers of egress.protocol never disagree (TRANSFORMED only when neither check fires).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.carts_service.aws_security_group.thisegress-sourcesREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. As ingress sources; the egress restriction setting reads egress.cidr_blocks too and is REVIEW exactly when the egress restriction check fires — the same order here, so the two never disagree.A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.carts_service.aws_security_group.thisingress-sourcesLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). cidr_blocks → stackit_security_group_rule.ip_range (one rule per range), security_groups → remote_security_group_id (pinned provider); REVIEW for the group when a rule is not generated, as rule ports (2026-09-27).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.carts_service.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.carts_service.aws_security_group.thisrule-portsLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.carts_service.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.carts_service.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-connect-valuesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-desired-countREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-discoveryREVIEWA check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE.a check of the knowledge base (ecs service discovery)
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-execute-commandREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-public-ip-settingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thisservice-task-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistask-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-container-definitionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret_version.catalog_db (aws_secretsmanager_secret_version), module.retail_app_ecs.aws_secretsmanager_secret_version.catalog_opensearch (aws_secretsmanager_secret_version). What each reference becomes is part of this setting.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-container-image-registryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-container-plaintext-secret-envREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-container-secret-referencesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-execution-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-network-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_ecs_service.thistd-task-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_roleiam-managed-ecsREVIEWA check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed ecs)
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret.catalog_db (aws_secretsmanager_secret), module.retail_app_ecs.aws_secretsmanager_secret.catalog_opensearch (aws_secretsmanager_secret). What each reference becomes is part of this setting.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_execution_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_roleiam-managed-customer-policyREVIEWA check of the knowledge base (iam managed customer policy) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). This attachment names a customer-managed policy of this estate (an aws_iam_policy), not an AWS-managed one. What to decide: the roles of this role's service account from the findings of every policy attached here, and whether one policy shared by several roles becomes one set of role assignments or several.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed customer policy)
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.catalog_service.aws_iam_role.task_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.catalog_service.aws_security_group.thisegress-rule-protocolREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. protocol → stackit_security_group_rule.protocol (pinned provider). the egress restriction setting reads the same attribute and is REVIEW exactly when the egress restriction check fires; this semantic is then REVIEW as well, so the two critical readers of egress.protocol never disagree (TRANSFORMED only when neither check fires).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.catalog_service.aws_security_group.thisegress-sourcesREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. As ingress sources; the egress restriction setting reads egress.cidr_blocks too and is REVIEW exactly when the egress restriction check fires — the same order here, so the two never disagree.A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.catalog_service.aws_security_group.thisingress-sourcesLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). cidr_blocks → stackit_security_group_rule.ip_range (one rule per range), security_groups → remote_security_group_id (pinned provider); REVIEW for the group when a rule is not generated, as rule ports (2026-09-27).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.catalog_service.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.catalog_service.aws_security_group.thisrule-portsLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.catalog_service.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.catalog_service.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-connect-valuesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-desired-countREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-discoveryREVIEWA check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE.a check of the knowledge base (ecs service discovery)
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-execute-commandREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-public-ip-settingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thisservice-task-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistask-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-container-definitionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-container-image-registryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-container-plaintext-secret-envREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-container-secret-referencesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-execution-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-network-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_ecs_service.thistd-task-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_roleiam-managed-ecsREVIEWA check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed ecs)
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_execution_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_roleiam-managed-customer-policyREVIEWA check of the knowledge base (iam managed customer policy) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). This attachment names a customer-managed policy of this estate (an aws_iam_policy), not an AWS-managed one. What to decide: the roles of this role's service account from the findings of every policy attached here, and whether one policy shared by several roles becomes one set of role assignments or several.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed customer policy)
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person. The unit names module.dependencies.module.dynamodb_carts.aws_dynamodb_table.this (aws_dynamodb_table) through this setting (the target does not carry it: it is in the class redesign), so what the reference becomes is part of this setting.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.checkout_service.aws_iam_role.task_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.checkout_service.aws_security_group.thisegress-rule-protocolREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. protocol → stackit_security_group_rule.protocol (pinned provider). the egress restriction setting reads the same attribute and is REVIEW exactly when the egress restriction check fires; this semantic is then REVIEW as well, so the two critical readers of egress.protocol never disagree (TRANSFORMED only when neither check fires).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.checkout_service.aws_security_group.thisegress-sourcesREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. As ingress sources; the egress restriction setting reads egress.cidr_blocks too and is REVIEW exactly when the egress restriction check fires — the same order here, so the two never disagree.A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.checkout_service.aws_security_group.thisingress-sourcesLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). cidr_blocks → stackit_security_group_rule.ip_range (one rule per range), security_groups → remote_security_group_id (pinned provider); REVIEW for the group when a rule is not generated, as rule ports (2026-09-27).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.checkout_service.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.checkout_service.aws_security_group.thisrule-portsLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.checkout_service.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.checkout_service.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-connect-valuesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-desired-countREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-discoveryREVIEWA check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE.a check of the knowledge base (ecs service discovery)
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-execute-commandREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-public-ip-settingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thisservice-task-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistask-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-container-definitionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret_version.mq (aws_secretsmanager_secret_version), module.retail_app_ecs.aws_secretsmanager_secret_version.orders_db (aws_secretsmanager_secret_version). What each reference becomes is part of this setting.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-container-image-registryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-container-plaintext-secret-envREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-container-secret-referencesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-execution-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-network-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_ecs_service.thistd-task-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_roleiam-managed-ecsREVIEWA check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed ecs)
module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person. The unit names 2 resources through this setting whose references the draft does not resolve: module.retail_app_ecs.aws_secretsmanager_secret.mq (aws_secretsmanager_secret), module.retail_app_ecs.aws_secretsmanager_secret.orders_db (aws_secretsmanager_secret). What each reference becomes is part of this setting.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.orders_service.aws_iam_role.task_execution_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.orders_service.aws_iam_role.task_roleiam-managed-customer-policyREVIEWA check of the knowledge base (iam managed customer policy) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). This attachment names a customer-managed policy of this estate (an aws_iam_policy), not an AWS-managed one. What to decide: the roles of this role's service account from the findings of every policy attached here, and whether one policy shared by several roles becomes one set of role assignments or several.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed customer policy)
module.retail_app_ecs.module.orders_service.aws_iam_role.task_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.orders_service.aws_iam_role.task_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.orders_service.aws_iam_role.task_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.orders_service.aws_security_group.thisegress-rule-protocolREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. protocol → stackit_security_group_rule.protocol (pinned provider). the egress restriction setting reads the same attribute and is REVIEW exactly when the egress restriction check fires; this semantic is then REVIEW as well, so the two critical readers of egress.protocol never disagree (TRANSFORMED only when neither check fires).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.orders_service.aws_security_group.thisegress-sourcesREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. As ingress sources; the egress restriction setting reads egress.cidr_blocks too and is REVIEW exactly when the egress restriction check fires — the same order here, so the two never disagree.A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.orders_service.aws_security_group.thisingress-sourcesLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). cidr_blocks → stackit_security_group_rule.ip_range (one rule per range), security_groups → remote_security_group_id (pinned provider); REVIEW for the group when a rule is not generated, as rule ports (2026-09-27).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.orders_service.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.orders_service.aws_security_group.thisrule-portsLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.orders_service.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.orders_service.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-connect-valuesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Service Connect's switch, namespace, service names, client aliases (DNS name and port), traffic-test header rules, mTLS settings (KMS key, role, private CA) and proxy logging: an AWS-managed service mesh with no draft counterpart; discovery on SKE is Kubernetes Services and DNS, mesh features a person's choice.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-desired-countREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. desired_count is the number of tasks ECS keeps running (ecs_service docs: 'Number of instances of the task definition to place and keep running'); on SKE it becomes Deployment replicas or a HorizontalPodAutoscaler floor. The draft writes it as the replicas of the Deployment in kubernetes/<service>/manifests.yaml when it is a literal number (a HorizontalPodAutoscaler owns the count where the service has a scaling target and policy the draft translates; a number that is not visible statically is a REQUIRED_ token) — a person confirms the number, REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-discoveryREVIEWA check of the knowledge base (ecs service discovery) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting states how ECS services find each other: AWS Cloud Map registries and namespaces, or ECS Service Connect.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person replaces the lookups with Kubernetes Services and cluster DNS on SKE.a check of the knowledge base (ecs service discovery)
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-execute-commandREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ECS Exec opens a shell in a running task; kubectl exec (and who may use it through RBAC) is the counterpart and is not part of the draft.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-load-balancer-targetREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The setting states which container and port receive the load balancer's traffic, the target group or classic load balancer name, and the blue/green listener rules and role: the wiring becomes a Kubernetes Service / Ingress selector and a STACKIT load balancer target pool, written by a person (the draft has no service block to carry it).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-network-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The subnets and security groups the tasks' network interfaces use (awsvpc mode); on SKE pods take the cluster's network and NetworkPolicies decide reachability — a person re-expresses the security group rules.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-public-ip-settingREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. assign_public_ip in either state (the public ip setting reads only true through the public address check): tasks with a public address are exposed unless a person decides the exposure on SKE explicitly (LoadBalancer services, network policies); false is the private default and is still re-checked, the draft carries no service block.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thisservice-task-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition the service runs (family:revision or ARN) becomes the Deployment's pod template; ecs_service.task_definition names it as a string, the definition itself is a separate resource a person translates.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistask-definitionREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The ECS task definition: the containers a service runs, with their CPU and memory, environment, secrets and health checks.A person translates the task definition into Kubernetes Deployments and Services on SKE (CPU and memory, environment, secrets and health checks become manifest fields); the rule names a Cloud Foundry push as the other way for a simple web app.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-container-definitionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.container_definitions of the unit that runs the task. The containers of the task: images, commands, environment, secret references, ports, health checks, log configuration - the workload itself, and where its credentials are injected. Decide per container: the image and where it lives, command and entry point, environment, ports and health check, cpu/memory as requests and limits, and the log destination; the secret references and the plaintext secrets among the environment entries are read by the settings of the secret references and of the plaintext secrets, the registry by the setting of the image registry.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-container-image-registryREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A container image comes from Amazon ECR (a `.dkr.ecr.` or public.ecr.aws registry host) or needs `repositoryCredentials`. The images are not moved by the draft and a pod on STACKIT cannot assume the ECR pull rights of the ECS execution role. Decide: where the images live on STACKIT (the STACKIT Container Registry has a GA API, the Container Registry API specification, but no Terraform resource in pinned provider; a registry of your choice works too), how they are copied, and the pull secret the cluster uses.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-container-plaintext-secret-envREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. An `environment` entry whose NAME looks like a credential (password, secret, token, api key, private key, credential) carries a non-empty plaintext value in the task definition (a name heuristic, not a proof: the value is never shown). Decide: whether the value is a secret; if it is, it must not be copied into a Kubernetes manifest or a Terraform variable default but stored in a STACKIT Secrets Manager entry and the plaintext copy in the AWS state and task definition rotated.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-container-secret-referencesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The task definition's container_definitions state secret references (the `secrets` list: name and valueFrom, "the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store", AWS ECS API reference, Secret). A person decides first which STACKIT Secrets Manager instance holds each referenced secret (stackit_secretsmanager_instance, pinned provider: name, acls, kms_key; the secret entries themselves have no Terraform resource in the pinned provider, they are created through the API or the portal, and their VALUES are never in the Terraform sources - a person copies them). Second, a person decides how the pods read them (the STACKIT Secrets Manager authenticates with Vault-compatible tokens and AppRole, docs.stackit.cloud/products/security/secrets-manager/; ECS injects valueFrom into environment variables when the container starts, and no STACKIT equivalent of that injection is stated on the documentation page checked 2026-10-06, so the Kubernetes Secret or the in-pod fetch is a design of its own).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-execution-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.execution_role_arn of the template the group builds its instances from: The role ECS uses to pull images and read the secrets it injects into the containers. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-network-modeREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.network_mode of the template the group builds its instances from: How the containers are networked (awsvpc, bridge, host, none): whether each task has its own interface and security groups or shares the host's network. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_ecs_service.thistd-task-role-arnREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. ecs_task_definition.task_role_arn of the template the group builds its instances from: The role the application in the containers acts as towards AWS APIs. Not verified as carried by any semantic of this family — reviewed.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for aws_ecs_service
module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_roleiam-managed-ecsREVIEWA check of the knowledge base (iam managed ecs) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Managed policy of an ECS role (AWS: task execution pulls images from ECR and writes CloudWatch Logs; the container-instance role registers hosts with ECS). What to decide: the registry pull credential and the log destination of the replacing workload.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed ecs)
module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.ui_service.aws_iam_role.task_execution_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.ui_service.aws_iam_role.task_roleiam-managed-customer-policyREVIEWA check of the knowledge base (iam managed customer policy) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). This attachment names a customer-managed policy of this estate (an aws_iam_policy), not an AWS-managed one. What to decide: the roles of this role's service account from the findings of every policy attached here, and whether one policy shared by several roles becomes one set of role assignments or several.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam managed customer policy)
module.retail_app_ecs.module.ui_service.aws_iam_role.task_roleiam-trust-service-workloadREVIEWA check of the knowledge base (iam trust service workload) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Trust policy: lambda.amazonaws.com or ecs-tasks.amazonaws.com assumes this role, so an application workload (a Lambda function or an ECS task) runs as it. What to decide: key or federation, and the roles of the attached policies (see the permission findings of this unit).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (iam trust service workload)
module.retail_app_ecs.module.ui_service.aws_iam_role.task_rolepermissionsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. STACKIT IAM grants roles; the policy documents, conditions and resource patterns of the role are translated by a person.A person translates each permission of the attached policies into STACKIT roles on the target resources.the mapping rule for aws_iam_role
module.retail_app_ecs.module.ui_service.aws_iam_role.task_roletrustREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The trust policy document of the role (its principals and conditions) has no STACKIT counterpart: stackit_service_account has name and project_id only (pinned provider schema), and the draft names assume_role_policy as not carried.A person decides per principal who may assume the role: a federated identity provider (IRSA), a server attachment or a service account key; a role used only by an AWS service is dropped after a person confirms it.the mapping rule for aws_iam_role
module.retail_app_ecs.module.ui_service.aws_security_group.thisegress-rule-protocolREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. protocol → stackit_security_group_rule.protocol (pinned provider). the egress restriction setting reads the same attribute and is REVIEW exactly when the egress restriction check fires; this semantic is then REVIEW as well, so the two critical readers of egress.protocol never disagree (TRANSFORMED only when neither check fires).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.ui_service.aws_security_group.thisegress-sourcesREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. As ingress sources; the egress restriction setting reads egress.cidr_blocks too and is REVIEW exactly when the egress restriction check fires — the same order here, so the two never disagree.A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.retail_app_ecs.module.ui_service.aws_security_group.thisingress-sourcesLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). cidr_blocks → stackit_security_group_rule.ip_range (one rule per range), security_groups → remote_security_group_id (pinned provider); REVIEW for the group when a rule is not generated, as rule ports (2026-09-27).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.ui_service.aws_security_group.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this security group included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.ui_service.aws_security_group.thisrule-portsLEDGERUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. Whether the draft carries this setting is decided by its semantic ledger entry "security group rules", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). Each rule becomes a stackit_security_group_rule: protocol → protocol.name/protocol.number, from_port/to_port → port_range.min/max, or icmp_parameters type/code for icmp (pinned provider schema).The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:security group rules
module.retail_app_ecs.module.ui_service.aws_security_group.thissecurity-group-vpc-membershipUNSUPPORTEDA check of the knowledge base (topology vpc unproven) found a setting the target has no counterpart for (a finding of this unit describes it). UNSUPPORTED, by name: a STACKIT security group has no network (VPC) scope. stackit_security_group takes project_id, name, description, labels, stateful and region only (pinned provider), and the IaaS API object SecurityGroup has no network field either (stackit-api-specifications services/iaas/v2); the group is project-wide and can be attached to the network interfaces of every network of the project.A person confirms which VPC each network resource of the estate is in and whether the networks of another VPC belong in this project or in a project of their own joined through a Network Area; the group is then attached only to the interfaces of the networks that replace its VPC.a check of the knowledge base (topology vpc unproven)
module.retail_app_ecs.module.ui_service.aws_security_group.thisstatefulREVIEWUNENFORCED: the security group is attached to no block of the target (it is written in the draft and listed by no resource, or, where the access lists of its members carry it, not written), so its rules ("security group rules") restrict nothing on the target until an attachment is designed; this setting is not carried as an enforced control. STACKIT security groups are stateful by default (tested on a STACKIT project on 2026-09-24: stateful=true).A person designs how the target enforces what the group allowed (attaches the group, or its replacement, to the target resources that take its place), or accepts the difference.unenforced:security group rules
module.vpc.module.vpc.aws_eip.natpublic-addressREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The address changes. An Elastic IP of a NAT gateway is its fixed egress address, an open question on STACKIT (fixed egress ip of the NAT gateway rule).A person decides how peers that allow-list the Elastic IP are served: STACKIT egress uses the project's shared address, which differs from the Elastic IP, cannot be set and can change; a STACKIT public IP per server keeps its address.the mapping rule for aws_eip
module.vpc.module.vpc.aws_nat_gateway.thisfixed-egress-ipREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A stable egress IP on STACKIT is an open question (no source in this repository answers it; the per-network SNAT address is computed and cannot be chosen or kept).A person decides how peers that allow-list the Elastic IP are served: a routed STACKIT network leaves by the project's shared egress address, which cannot be set and can change, so the allow-list follows it or each server gets a STACKIT public IP.the mapping rule for aws_nat_gateway
module.vpc.module.vpc.aws_nat_gateway.thisnat-placementREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. A zonal NAT gateway (subnet_id) is placed in one AZ; a regional one lists its per-AZ egress in availability_zone_address(es).availability_zone. STACKIT has no NAT gateway resource, and its documentation does not state whether the implicit outbound path is zone-scoped: REVIEW.A person decides whether the egress path must stay in one zone or per zone, because the STACKIT documentation does not state whether the implicit outbound path is scoped to a zone.the mapping rule for aws_nat_gateway
module.vpc.module.vpc.aws_nat_gateway.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). Several VPCs, a VPC count that is not visible, or a unit of the estate that names a VPC, or is placed in a subnet, the scan cannot prove is the estate's, leave the architecture to the architect for every unit of the topology, this NAT gateway included: STACKIT has no VPC container in its stable model, the project is the boundary of its networks, so the draft cannot keep several VPCs apart in one project.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)
module.vpc.module.vpc.aws_vpc.thisdefault-nacl-rulesREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. The account's default network ACL is adopted by the VPC (aws_default_network_acl); a deny rule, a rule that is not all-protocol, a CIDR other than 0.0.0.0/0 or ::/0, or an explicitly empty rule list narrows or leaves undecided what the AWS default allow-all states.A person re-expresses the default network ACL's rules as security group rules, because STACKIT has no stateless subnet ACL; no STACKIT documentation states that a server or network without an attached security group allows all traffic.the mapping rule for aws_vpc
module.vpc.module.vpc.aws_vpc.thisdefault-route-tableREVIEWA check of the knowledge base (vpc main table undecided) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The account's default route table is adopted (a facet of the VPC, aws_default_route_table, AWS provider 6.66.0). Routes other than a plain 0.0.0.0/0 to an internet or NAT gateway are REVIEW.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (vpc main table undecided)
module.vpc.module.vpc.aws_vpc.thisdefault-security-group-omitted-directionREVIEWA check of the knowledge base (vpc default sg no ingress rules) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The adopted default security group of the VPC (a facet, aws_default_security_group) does not state an ingress or an egress direction. Nothing is drafted for this facet, so the empty direction is not reproduced: a person decides whether servers that used the default group must stay without outbound traffic (delete the allow-all egress rules of the STACKIT group after apply) or are meant to have it, and puts them in a STACKIT group that states no ingress rule, not in the project's default group.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (vpc default sg no ingress rules)
module.vpc.module.vpc.aws_vpc.thisdns-settingsREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. enable_dns_support and enable_dns_hostnames of the VPC decide how names resolve for what runs in it; STACKIT has no VPC object (each subnet becomes a stackit_network).A person confirms how names resolve for the servers of the migrated networks.the mapping rule for aws_vpc
module.vpc.module.vpc.aws_vpc.thismain-table-setREVIEWA check of the knowledge base (vpc main table undecided) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). The setting names the route table that is the main route table of the VPC, when the configuration sets it or the scan cannot tell. STACKIT has no main route table.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (vpc main table undecided)
module.vpc.module.vpc.aws_vpc.thisnetwork-topology-boundaryREVIEWA check of the knowledge base (topology vpc unproven) fired on this unit and leaves the setting to a person: the target does not settle it by itself (a finding of this unit describes it). STACKIT has no VPC container in its stable model: the project is the boundary of its networks and its virtual router routes between all networks of one project (docs.stackit.cloud core-networking architecture, updated Aug 20, 2026: "Routing between multiple Virtual Networks in the same project"; SNA "extends the networking architecture to enable cross-project connectivity"). Several VPCs, or a count the scan cannot see: the draft puts every network in the one var.project_id and cannot keep them apart — REVIEW, the choice is the architect's. A unit that names a VPC, or is placed in a subnet (subnet_id, subnets, vpc_config.subnet_ids, ...), without one whole reference to the VPC or to a subnet of the estate may stand in a VPC the estate does not create: the architect decides it the same way (REVIEW).A person decides it as that finding asks, and the finding's closing evidence or decision is recorded.a check of the knowledge base (topology vpc unproven)

The open plan decisions and manual actions of the drafted units are listed under Deployment prerequisites on the Architecture page; the register holds them as records too (kind of record: plan decision, manual action).