← Google Cloud Dynamic Python Web AppExamplesLegal NoticePrivacy

StackToIT Migration Intelligence Workspace

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

Partially executable migration package · For review only · Not approved.

Technical details: run, versions, digest and evidence freshness

Assessment

Assessment
gcp-candidates/terraform-dynamic-python-webapp/infra (assessment format 0.24.0)
Assessment timestamp
Generated 2026-11-07 04:24 UTC by stacktoit 0.6.0-13076-ga19ea28c64 (a19ea28c64)
Run
6f8f72b2-1c34-4cfc-8483-344c41245364 · source digest sha256:19bfed642d5789ccada81b91d5c36e33175dcafd66dc46b1644ffa105d020000
Source snapshot
partly decided only at plan time · google not locked; google-beta not locked; http not locked; random not locked; time 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.394.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-07 04:24 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.

6 decisions to make and 1 default to confirm; 5 of the 6 decisions to make hold 24 steps back (of the 78 steps of the plan); 16 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 5 steps of the plan (2 of them automated) by itself. Open its card

Of the 6 decisions to make, 5 free steps by themselves; answered together they free 17 distinct steps of the plan (2 of them automated).

1 root variable hold 1 of the 1 open critical setting that rest on a variable's default (1 open, 0 conditional_open; a setting that rests on several is counted once): 1 left at their defaults — region: state it in a variable file and give the file with --var-file FILE (the scan reads no -var and no TF_VAR_*)
  • variable region (Google Cloud Region) · 1 open, 0 conditional_open · settings: geo-replication · state it in a variable file and give the file with --var-file FILE (the scan reads no -var and no TF_VAR_*)

Root causes (1)

Firebase hosting site client google_firebase_hosting_site.client — deciding it frees 1 dependent item on 1 dependent unit · exists only if a plan-time input holds

Why: it is in the class redesign.

Next: Decide whether a proposed STACKIT alternative replaces a source capability for google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder, google_firebase_hosting_site.client and 3 more: choose one of the 2 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-PROPOSED-ALTERNATIVE, DEC-IAM-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT, DEC-OPS-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT.

Dependent records: DEC-GEN-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER.

Show the 1 dependent unit

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

How this register works

Decision register: built; 6 decisions to make (4 plan decisions, 2 plan statements) · 1 default to confirm · 16 units to review (72 critical settings: 71 to decide (22 of them are conditional), 1 confirm only) on 16 units. Records: 5 plan decision records, 36 critical setting 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 carries that option (the line of the option in decisions-template.yaml says whether an answer of the inputs file writes it or no answer of this build does). The one exception is an option that declines a default of the draft (choose-the-size, choose-the-snapshot-count, choose-the-zone-per-server, keep-the-source-rules-and-redesign-a-firewall, machine-type-with-a-local-disk, persistent-volume-for-the-data): the run that reads that answer writes its draft without the default, and the value the default stood for is yours to set. 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 43 records, 3 root blockers (3 open items), 32 open on their own (63 open items), 7 conditional on a count or for_each (22 open items), 1 propagated from a root cause (1 open item). 1 root cause, 1 dependent unit. 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 of your file 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 (43 records)

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

Other decisions (no work package stated)

5 records: 5 open input
First required action Allow the calls of STACKIT APIs that are not generally available open input

3 units: google_pubsub_topic.faux, google_secret_manager_secret.django_admin_password and 1 more · owner role Platform Architect · required by phase: before the pilot · 3 steps of the plan rest on it directly, and the steps after them wait with them

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 5 steps of the plan by itself
Applications touched
migrate (PROPOSED)
  • google_secret_manager_secret.django_settings is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
waves 1 to 3 · steps in security, platform services
What an answer frees
The answer that frees most frees 5 steps of the plan (2 of them automated) by itself.
Answer
not answered: no decisions file was given with this run
What the draft does
The draft holds MAN/pubsub.topic/name/google_pubsub_topic.faux, API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_admin_password and API/secrets-manager-vault/WriteSecret/google_secret_manager_secret.django_settings 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 (2 APIs): 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 APIs, which may change or be withdrawn: Pub/Sub v1beta (beta) and Secrets Manager v1 (release status not stated). 3 steps of the plan name this decision and wait for this answer (the steps that come after them are counted in what an answer frees); allowing the calls lets the plan carry them out and makes the migration depend on those APIs. If you say no (record a rejection), the calls are not made: the steps of Pub/Sub and Secrets Manager stay open. Record the answer in the decisions file given with --decisions (decisions-template.yaml); answer each API on its own through the members of the record.

This record holds 2 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 2 units
  1. google_pubsub_topic.faux; what the plan says of it: the pubsub API v1beta is beta: 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 google_pubsub_topic.faux wait for this decision; the draft's own blocks do not
    • allow-calls-of-the-api: the draft already carries it out for this unit
  2. google_secret_manager_secret.django_admin_password; what the plan says of it: 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 google_secret_manager_secret.django_admin_password, google_secret_manager_secret.django_settings wait for this decision; the draft's own blocks do not
    • allow-calls-of-the-api: the draft already carries it out for this unit
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 google_secret_manager_secret.django_admin_password, google_secret_manager_secret.django_settings wait for this decision; the draft's own blocks do not
  • the pubsub API v1beta is beta: 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 google_pubsub_topic.faux 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)
Applications of your file
None named.
Plan decisions
2
Show the 2 plan decisions
  • DEC-GEN-CONVERT-API-OPT-IN/google_pubsub_topic.faux — alias convert:api:pubsub:v1beta:beta:API_OPT_IN
  • DEC-GEN-CONVERT-API-OPT-IN/google_secret_manager_secret.django_admin_password — 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.
Decide whether a proposed STACKIT alternative replaces a source capability open input

7 units: google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init and 5 more · owner role Platform Architect · required by phase: before the pilot · 4 steps of the plan rest on it directly, and the steps after them wait with them

Options and trade-off
  • use-the-proposed-module Use the proposed module, with the stated difference: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 4 steps of the plan by itself
  • design-it-another-way Design it another way and leave the module off: a person carries it out: the answer frees only the manual step that does; in this run it frees 4 steps of the plan by itself
Applications touched
migrate (PROPOSED)
  • google_secret_manager_secret.django_settings is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
waves 2 to 3 · steps in data services, workloads
What an answer frees
The answer that frees most frees 4 steps of the plan (none of them automated) by itself.
Answer
not answered: no decisions file was given with this run
What the draft does
The draft holds MAN/unit/google_cloudbuild_trigger.activategcb, MAN/unit/google_cloudbuild_trigger.init, MAN/unit/google_cloudbuild_trigger.placeholder and MAN/unit/google_firebase_hosting_site.client until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. The target has no equal of a source capability, and the draft holds a STACKIT alternative in a module that is switched off (8 converter decisions): nothing of the module applies until a person accepts the stated difference, gives it its values and sets its switch, or designs the capability another way.
Ways out
  1. Use the proposed module, with the stated difference; effect: A person reads the module, sets its values and sets its switch to true: the module is then part of the plan of the draft, with the stated difference from the source. While the switch is false, the module creates nothing.
  2. Design it another way and leave the module off; effect: A person designs the capability another way, by hand, and the switch of the module stays false: the module creates nothing and the unit's manual step stays the person's work.
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 whether a proposed STACKIT alternative replaces a source capability for google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder, google_firebase_hosting_site.client and 3 more: 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 8 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 8 units
  1. google_cloudbuild_trigger.activategcb; what the plan says of it: the target has no equal of this Cloud Build trigger: starts a build on a source event, a Pub/Sub message, a webhook or by hand, with its steps, substitutions, artifacts, secrets and optional approval: Nothing is converted. The same delivery is a workflow of STACKIT Git Pipelines (written for GitHub Actions; STACKIT-managed or custom runners; secrets from Secrets Manager or the repository; a manual-approval action) or the customer's own CI/CD. Trigger conditions, steps, secrets (created again, never copied), the service account (replaced by the credentials the workflow uses against STACKIT), the log destination and the approval are written again by a person. To decide: Which pipelines are still needed, where they run (STACKIT Git Pipelines or the customer's own CI/CD), how each trigger, step, secret and approval is written again, and who owns the workflow files.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  2. google_cloudbuild_trigger.init; what the plan says of it: the target has no equal of this Cloud Build trigger: starts a build on a source event, a Pub/Sub message, a webhook or by hand, with its steps, substitutions, artifacts, secrets and optional approval: Nothing is converted. The same delivery is a workflow of STACKIT Git Pipelines (written for GitHub Actions; STACKIT-managed or custom runners; secrets from Secrets Manager or the repository; a manual-approval action) or the customer's own CI/CD. Trigger conditions, steps, secrets (created again, never copied), the service account (replaced by the credentials the workflow uses against STACKIT), the log destination and the approval are written again by a person. To decide: Which pipelines are still needed, where they run (STACKIT Git Pipelines or the customer's own CI/CD), how each trigger, step, secret and approval is written again, and who owns the workflow files.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  3. google_cloudbuild_trigger.placeholder; what the plan says of it: the target has no equal of this Cloud Build trigger: starts a build on a source event, a Pub/Sub message, a webhook or by hand, with its steps, substitutions, artifacts, secrets and optional approval: Nothing is converted. The same delivery is a workflow of STACKIT Git Pipelines (written for GitHub Actions; STACKIT-managed or custom runners; secrets from Secrets Manager or the repository; a manual-approval action) or the customer's own CI/CD. Trigger conditions, steps, secrets (created again, never copied), the service account (replaced by the credentials the workflow uses against STACKIT), the log destination and the approval are written again by a person. To decide: Which pipelines are still needed, where they run (STACKIT Git Pipelines or the customer's own CI/CD), how each trigger, step, secret and approval is written again, and who owns the workflow files.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  4. google_firebase_hosting_site.client; what the plan says of it: the target has no equal of this static web hosting site: Static files are published into an Object Storage bucket by a pipeline, and a CDN distribution (a beta resource) with the bucket as origin serves them on a custom domain; the redirects of the site become redirect rules of the distribution. Custom response headers, rewrites to Cloud Run services or Cloud Functions, preview channels and the release history have no counterpart and are restated in the pipeline or in the application. To decide: Which bucket is the origin, which domain the distribution serves, and how rewrites and previews are replaced. The CDN resources are beta.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  5. google_secret_manager_secret_iam_binding.django_admin_password; what the plan says of it: the target has no equal of this the members of one role on the Secret Manager secret: A STACKIT role assignment is not a grant on the Secret Manager secret. It gives one user, group or service account one STACKIT role on a whole project, folder or organisation. The role is a set of STACKIT permissions, not the Google role, and no table maps one to the other. It has no condition and no public member, so what the grant gave to a Google group, a domain, a federated identity or everyone is named again, and the access reaches more than the Secret Manager secret. A binding on a secret group applies to every secret in the group, so it is wider than a grant on one secret unless the secret has a group of its own, and its roles are Secrets Manager roles. The binding was authoritative for its role: STACKIT role assignments are additive, so a person who holds the role through another assignment keeps it, and removing such people is a step of a person. To decide: Which STACKIT role, on which project, folder or organisation, gives the same people the access they need on the Secret Manager secret, knowing it covers everything in that scope; which STACKIT users, groups or service accounts take the place of Google groups, domains, federated identities and a public member; and whether the grant ends with the Secret Manager secret when it has no replacement. For secrets: which secret group holds the secret, who else shares that group, and which Secrets Manager role and subject take the grant. Whether people who hold the role through another assignment keep it. The draft of google_secret_manager_secret.django_admin_password stands as it is: this answer decides the module and nothing of that draft.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  6. google_secret_manager_secret_iam_binding.django_settings; what the plan says of it: the target has no equal of this the members of one role on the Secret Manager secret: A STACKIT role assignment is not a grant on the Secret Manager secret. It gives one user, group or service account one STACKIT role on a whole project, folder or organisation. The role is a set of STACKIT permissions, not the Google role, and no table maps one to the other. It has no condition and no public member, so what the grant gave to a Google group, a domain, a federated identity or everyone is named again, and the access reaches more than the Secret Manager secret. A binding on a secret group applies to every secret in the group, so it is wider than a grant on one secret unless the secret has a group of its own, and its roles are Secrets Manager roles. The binding was authoritative for its role: STACKIT role assignments are additive, so a person who holds the role through another assignment keeps it, and removing such people is a step of a person. To decide: Which STACKIT role, on which project, folder or organisation, gives the same people the access they need on the Secret Manager secret, knowing it covers everything in that scope; which STACKIT users, groups or service accounts take the place of Google groups, domains, federated identities and a public member; and whether the grant ends with the Secret Manager secret when it has no replacement. For secrets: which secret group holds the secret, who else shares that group, and which Secrets Manager role and subject take the grant. Whether people who hold the role through another assignment keep it. The draft of google_secret_manager_secret.django_settings stands as it is: this answer decides the module and nothing of that draft.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  7. google_storage_bucket_iam_member.automation; what the plan says of it: the target has no equal of this one member's role on the Cloud Storage bucket: A STACKIT credentials group is not a grant on the Cloud Storage bucket. It is the principal that a bucket policy names, a set of S3 keys with no Google identity behind it, and by itself it gives no access to the bucket and takes none away. The statement that grants it something is a statement of the bucket policy, in the policy language of STACKIT (a credentials group or * as the principal, S3 actions, five condition keys), which no Terraform resource sets. The Google role is not mapped to S3 actions by any table, the condition of the grant has no counterpart unless it can be written with those five condition keys, and a Google group, a domain, a federated identity and allUsers or allAuthenticatedUsers are named again as credentials groups or as *. To decide: Which credentials group stands for each member of the grant, which S3 actions of the bucket policy give the same people the access they need and no more than the Google role gave, what becomes of the condition, of public members (allUsers, allAuthenticatedUsers), of Google groups, domains and federated identities, and whether the grant ends with the Cloud Storage bucket when it has no replacement. Which bucket the grant is on, because the scan does not hold it. The draft of google_storage_bucket.media stands as it is: this answer decides the module and nothing of that draft.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
  8. google_storage_bucket_iam_member.server; what the plan says of it: the target has no equal of this one member's role on the Cloud Storage bucket: A STACKIT credentials group is not a grant on the Cloud Storage bucket. It is the principal that a bucket policy names, a set of S3 keys with no Google identity behind it, and by itself it gives no access to the bucket and takes none away. The statement that grants it something is a statement of the bucket policy, in the policy language of STACKIT (a credentials group or * as the principal, S3 actions, five condition keys), which no Terraform resource sets. The Google role is not mapped to S3 actions by any table, the condition of the grant has no counterpart unless it can be written with those five condition keys, and a Google group, a domain, a federated identity and allUsers or allAuthenticatedUsers are named again as credentials groups or as *. To decide: Which credentials group stands for each member of the grant, which S3 actions of the bucket policy give the same people the access they need and no more than the Google role gave, what becomes of the condition, of public members (allUsers, allAuthenticatedUsers), of Google groups, domains and federated identities, and whether the grant ends with the Cloud Storage bucket when it has no replacement. Which bucket the grant is on, because the scan does not hold it. The draft of google_storage_bucket.media stands as it is: this answer decides the module and nothing of that draft.
    • use-the-proposed-module: the draft already carries it out for this unit
    • design-it-another-way: a manual alternative: a person carries it out for this unit
Technical details

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

Decision
proposed alternative, of the convert part of the draft
The plan’s reasons
  • the target has no equal of this Cloud Build trigger: starts a build on a source event, a Pub/Sub message, a webhook or by hand, with its steps, substitutions, artifacts, secrets and optional approval: Nothing is converted. The same delivery is a workflow of STACKIT Git Pipelines (written for GitHub Actions; STACKIT-managed or custom runners; secrets from Secrets Manager or the repository; a manual-approval action) or the customer's own CI/CD. Trigger conditions, steps, secrets (created again, never copied), the service account (replaced by the credentials the workflow uses against STACKIT), the log destination and the approval are written again by a person. To decide: Which pipelines are still needed, where they run (STACKIT Git Pipelines or the customer's own CI/CD), how each trigger, step, secret and approval is written again, and who owns the workflow files.
  • the target has no equal of this one member's role on the Cloud Storage bucket: A STACKIT credentials group is not a grant on the Cloud Storage bucket. It is the principal that a bucket policy names, a set of S3 keys with no Google identity behind it, and by itself it gives no access to the bucket and takes none away. The statement that grants it something is a statement of the bucket policy, in the policy language of STACKIT (a credentials group or * as the principal, S3 actions, five condition keys), which no Terraform resource sets. The Google role is not mapped to S3 actions by any table, the condition of the grant has no counterpart unless it can be written with those five condition keys, and a Google group, a domain, a federated identity and allUsers or allAuthenticatedUsers are named again as credentials groups or as *. To decide: Which credentials group stands for each member of the grant, which S3 actions of the bucket policy give the same people the access they need and no more than the Google role gave, what becomes of the condition, of public members (allUsers, allAuthenticatedUsers), of Google groups, domains and federated identities, and whether the grant ends with the Cloud Storage bucket when it has no replacement. Which bucket the grant is on, because the scan does not hold it. The draft of google_storage_bucket.media stands as it is: this answer decides the module and nothing of that draft.
  • the target has no equal of this static web hosting site: Static files are published into an Object Storage bucket by a pipeline, and a CDN distribution (a beta resource) with the bucket as origin serves them on a custom domain; the redirects of the site become redirect rules of the distribution. Custom response headers, rewrites to Cloud Run services or Cloud Functions, preview channels and the release history have no counterpart and are restated in the pipeline or in the application. To decide: Which bucket is the origin, which domain the distribution serves, and how rewrites and previews are replaced. The CDN resources are beta.
  • the target has no equal of this the members of one role on the Secret Manager secret: A STACKIT role assignment is not a grant on the Secret Manager secret. It gives one user, group or service account one STACKIT role on a whole project, folder or organisation. The role is a set of STACKIT permissions, not the Google role, and no table maps one to the other. It has no condition and no public member, so what the grant gave to a Google group, a domain, a federated identity or everyone is named again, and the access reaches more than the Secret Manager secret. A binding on a secret group applies to every secret in the group, so it is wider than a grant on one secret unless the secret has a group of its own, and its roles are Secrets Manager roles. The binding was authoritative for its role: STACKIT role assignments are additive, so a person who holds the role through another assignment keeps it, and removing such people is a step of a person. To decide: Which STACKIT role, on which project, folder or organisation, gives the same people the access they need on the Secret Manager secret, knowing it covers everything in that scope; which STACKIT users, groups or service accounts take the place of Google groups, domains, federated identities and a public member; and whether the grant ends with the Secret Manager secret when it has no replacement. For secrets: which secret group holds the secret, who else shares that group, and which Secrets Manager role and subject take the grant. Whether people who hold the role through another assignment keep it. The draft of google_secret_manager_secret.django_admin_password stands as it is: this answer decides the module and nothing of that draft.
  • the target has no equal of this the members of one role on the Secret Manager secret: A STACKIT role assignment is not a grant on the Secret Manager secret. It gives one user, group or service account one STACKIT role on a whole project, folder or organisation. The role is a set of STACKIT permissions, not the Google role, and no table maps one to the other. It has no condition and no public member, so what the grant gave to a Google group, a domain, a federated identity or everyone is named again, and the access reaches more than the Secret Manager secret. A binding on a secret group applies to every secret in the group, so it is wider than a grant on one secret unless the secret has a group of its own, and its roles are Secrets Manager roles. The binding was authoritative for its role: STACKIT role assignments are additive, so a person who holds the role through another assignment keeps it, and removing such people is a step of a person. To decide: Which STACKIT role, on which project, folder or organisation, gives the same people the access they need on the Secret Manager secret, knowing it covers everything in that scope; which STACKIT users, groups or service accounts take the place of Google groups, domains, federated identities and a public member; and whether the grant ends with the Secret Manager secret when it has no replacement. For secrets: which secret group holds the secret, who else shares that group, and which Secrets Manager role and subject take the grant. Whether people who hold the role through another assignment keep it. The draft of google_secret_manager_secret.django_settings stands as it is: this answer decides the module and nothing of that draft.
  • that the stated difference from the source is acceptable for what depends on it
  • the values the module asks for, which the draft does not invent
Applications of your file
None named.
Plan decisions
8
Show the 8 plan decisions
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.activategcb — alias convert:google_cloudbuild_trigger.activategcb:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.init — alias convert:google_cloudbuild_trigger.init:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_cloudbuild_trigger.placeholder — alias convert:google_cloudbuild_trigger.placeholder:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_firebase_hosting_site.client — alias convert:google_firebase_hosting_site.client:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_secret_manager_secret_iam_binding.django_admin_password — alias convert:google_secret_manager_secret_iam_binding.django_admin_password:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_secret_manager_secret_iam_binding.django_settings — alias convert:google_secret_manager_secret_iam_binding.django_settings:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_storage_bucket_iam_member.automation — alias convert:google_storage_bucket_iam_member.automation:proposal:PROPOSED_ALTERNATIVE
  • DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE/google_storage_bucket_iam_member.server — alias convert:google_storage_bucket_iam_member.server:proposal:PROPOSED_ALTERNATIVE
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-proposed-module — Use the proposed module, with the stated difference. A person reads the module, sets its values and sets its switch to true: the module is then part of the plan of the draft, with the stated difference from the source. While the switch is false, the module creates nothing. (sources: https://opentofu.org/docs/language/meta-arguments/count/; the words they rest on are quoted in decisions.json)
  • design-it-another-way — Design it another way and leave the module off. A person designs the capability another way, by hand, and the switch of the module stays false: the module creates nothing and the unit's manual step stays the person's work. (sources: https://opentofu.org/docs/language/meta-arguments/count/; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Choose how the data is moved open input

1 unit: google_sql_database_instance.postgres · owner role Data Architect · required by phase: before the pilot · 13 steps of the plan rest on it directly, and the steps after them wait with them

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 4 steps of the plan by itself
  • 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 of the plan by itself
  • copy-the-objects-with-rclone Copy the objects of the bucket with rclone, from the source bucket to the STACKIT bucket: a person carries it out: the answer frees only the manual step that does; in this run it frees no step of the plan
  • copy-the-objects-with-the-aws-cli Copy the objects of the bucket with the AWS CLI, through a staging directory: a person carries it out: the answer frees only the manual step that does; in this run it frees no step of the plan
  • 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 3 steps of the plan by itself
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 1 · steps in data services, cutover, decommission
What an answer frees
The answer that frees most frees 6 steps of the plan (none of them automated) by itself; 7 of the 13 steps it holds stay held (7 steps need another option or a path of a person).
Answer
not answered: no decisions file was given with this run
What the draft does
The draft holds MAN/data/google_sql_database_instance.postgres/initial-copy/logical-replication, MAN/data/google_sql_database_instance.postgres/delta-sync/logical-replication, MAN/data/google_sql_database_instance.postgres/write-freeze/dump-restore, MAN/data/google_sql_database_instance.postgres/final-sync/dump-restore, MAN/data/google_sql_database_instance.postgres/reconcile/dump-restore, MAN/data/google_sql_database_instance.postgres/write-freeze/logical-replication, MAN/data/google_sql_database_instance.postgres/final-sync/logical-replication, MAN/data/google_sql_database_instance.postgres/reconcile/logical-replication, MAN/data/google_sql_database_instance.postgres/write-freeze/own-tool, MAN/data/google_sql_database_instance.postgres/final-sync/own-tool and 3 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 (1 converter decision): 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 take that step away.
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. Copy the objects of the bucket with rclone, from the source bucket to the STACKIT bucket; effect: For an S3 bucket: a person runs rclone on a move host that reaches both endpoints, with two S3 remotes (the source with the AWS credentials of the shell, the target as a provider Other remote at the STACKIT S3 endpoint with a credential of a credentials group, both read from the environment at run time), copies every current object while the writers keep writing, repeats the copy until a pass is short, stops the writers, runs the last pass, settles what the source deleted after the first copy, and compares both sides (the count and the bytes, the key lists and, where a hash is shared, the content) before the applications are switched. The copy carries the current object of every key and nothing of the bucket's configuration: no older version, no delete marker, no retention, no ACL, no policy; those are settled where the draft names them. The plan holds the steps of this option (the initial copy, the passes, the freeze, the last pass, the reconcile and the cleanup) with command templates and no credential value. No copy was run against a STACKIT bucket by StackToIT.
  4. Copy the objects of the bucket with the AWS CLI, through a staging directory; effect: For an S3 bucket: a person runs the AWS CLI on a move host with free disk for the data. One command sends its requests to one endpoint, so the objects are downloaded from the AWS bucket into a directory with aws s3 sync and uploaded from it to the STACKIT bucket with aws s3 sync and --endpoint-url set to the STACKIT S3 endpoint, with the credential of a credentials group read from the environment at run time. The data crosses the host twice, one pass after the other; aws s3 sync decides by size and last-modified time and never compares the content, so the comparison before the switch downloads the target and compares the files. The copy carries the current object of every key and nothing of the bucket's configuration, as with rclone. The plan holds the steps of this option with command templates and no credential value. No copy was run against a STACKIT bucket by StackToIT.
  5. 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
Choose how the data is moved for google_sql_database_instance.postgres: choose one of the 5 options, and record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

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

Decision
data movement, of the convert part of the draft
The plan’s reasons
  • 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 size of the data, the downtime the business tolerates and the consistency the application needs, to choose the method and the cutover window
Applications of your file
None named.
Plan decisions
1 alias convert:google_sql_database_instance.postgres:data:DATA_MOVEMENT
Options
5, 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)
  • copy-the-objects-with-rclone — Copy the objects of the bucket with rclone, from the source bucket to the STACKIT bucket. For an S3 bucket: a person runs rclone on a move host that reaches both endpoints, with two S3 remotes (the source with the AWS credentials of the shell, the target as a provider Other remote at the STACKIT S3 endpoint with a credential of a credentials group, both read from the environment at run time), copies every current object while the writers keep writing, repeats the copy until a pass is short, stops the writers, runs the last pass, settles what the source deleted after the first copy, and compares both sides (the count and the bytes, the key lists and, where a hash is shared, the content) before the applications are switched. The copy carries the current object of every key and nothing of the bucket's configuration: no older version, no delete marker, no retention, no ACL, no policy; those are settled where the draft names them. The plan holds the steps of this option (the initial copy, the passes, the freeze, the last pass, the reconcile and the cleanup) with command templates and no credential value. No copy was run against a STACKIT bucket by StackToIT. (sources: https://docs.stackit.cloud/products/storage/object-storage/tutorials/migrate-data-using-rclone/, https://rclone.org/commands/rclone_copy/, https://rclone.org/commands/rclone_check/, https://docs.stackit.cloud/products/storage/object-storage/reference/supported-operations-on-buckets-and-objects/; the words they rest on are quoted in decisions.json)
  • copy-the-objects-with-the-aws-cli — Copy the objects of the bucket with the AWS CLI, through a staging directory. For an S3 bucket: a person runs the AWS CLI on a move host with free disk for the data. One command sends its requests to one endpoint, so the objects are downloaded from the AWS bucket into a directory with aws s3 sync and uploaded from it to the STACKIT bucket with aws s3 sync and --endpoint-url set to the STACKIT S3 endpoint, with the credential of a credentials group read from the environment at run time. The data crosses the host twice, one pass after the other; aws s3 sync decides by size and last-modified time and never compares the content, so the comparison before the switch downloads the target and compares the files. The copy carries the current object of every key and nothing of the bucket's configuration, as with rclone. The plan holds the steps of this option with command templates and no credential value. No copy was run against a STACKIT bucket by StackToIT. (sources: https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html, https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-options.html, https://docs.stackit.cloud/products/storage/object-storage/how-tos/manage-encryption/; 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.
State where the units of each source project of the estate go open input

4 units: google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init and 2 more · owner role Platform Architect · required by phase: before the pilot · 4 steps of the plan rest on it directly, and the steps after them wait with them

Options and trade-off
  • units-go-to-the-project-variable The units of the source project go to the project the variable project_id names: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 1 step of the plan by itself
  • units-go-to-the-project-of-their-network The units of the source project go to the project of their network: the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 1 step of the plan by itself
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 1 · steps in data services, workloads
What an answer frees
The answer that frees most frees 1 step of the plan (none of them automated) by itself.
Answer
not answered: no decisions file was given with this run
What the draft does
The draft does not carry the setting on google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder and google_sql_database_instance.postgres. The draft holds MAN/estate/SOURCE_PROJECT_MAPPING until this decision is answered by an answer that frees it.
Still open
The target design is open until the decision is answered. 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. Project and Cloud Build location are data-residency/project-boundary facts with no STACKIT CI/CD resource to remap them onto -- REVIEW. The project of the instance (google 8.4.0 `project`: "The ID of the project in which the resource belongs. If it is not provided, the provider project is used"). A STACKIT project is the scope for ownership, resource consumption and access control (docs.stackit.cloud/platform/resource-manager/basics/projects/): whether the database's source project becomes the project of the rest of the estate is a design decision no rule evidences — a person confirms it — REVIEW (critical).
Ways out
  1. The units of the source project go to the project the variable project_id names; effect: A person states that the units of this source project go to the STACKIT project var.project_id names. The source project is carried nowhere: the answer records the person's mapping, changes nothing in the draft, which keeps its own project resolver, and closes the settings of that project.
  2. The units of the source project go to the project of their network; effect: A person states that the units of this source project go to the STACKIT project of the network they stand in. The network design maps a source network to a target project, and no map from a source project to a target project exists: the answer records the person's mapping, changes nothing in the draft, which keeps its own project resolver, and closes the settings of that project.
What closes it
A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. The module terraform/proposals/proposal_activategcb is switched on with its values and checked, or the design that replaces it is set up and checked; the decision records which. The module terraform/proposals/proposal_init is switched on with its values and checked, or the design that replaces it is set up and checked; the decision records which. The module terraform/proposals/proposal_placeholder is switched on with its values and checked, or the design that replaces it is set up and checked; the decision records which.
Next action
State where the units of each source project of the estate go for google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder and google_sql_database_instance.postgres: choose one of the 2 options, in the inputs file given with --inputs (the stubs are in inputs-template.yaml), once for each source project: that closes the settings of the project and does not change the draft.
Technical details

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

Decision
source project mapping, of the convert part of the draft
The plan’s reasons
  • The source places its units in the project example-project, and in a project the scan cannot read for some units, and the source project is carried nowhere. A person maps the source projects by answering target.project.source_project for each: var.project_id, or the project of the unit's network (network-project). The answer records that mapping and changes nothing in the draft, which keeps its own project resolver.
  • which source projects stay one STACKIT project and which do not, and who owns each
Applications of your file
None named.
Plan decisions
5
Show the 5 plan decisions
  • alias convert:estate:source_project:SOURCE_PROJECT_MAPPING
  • alias google_cloudbuild_trigger.activategcb|project-residency
  • alias google_cloudbuild_trigger.init|project-residency
  • alias google_cloudbuild_trigger.placeholder|project-residency
  • alias google_sql_database_instance.postgres|project-scope
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.
  • units-go-to-the-project-variable — The units of the source project go to the project the variable project_id names. A person states that the units of this source project go to the STACKIT project var.project_id names. The source project is carried nowhere: the answer records the person's mapping, changes nothing in the draft, which keeps its own project resolver, and closes the settings of that project. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network.md; the words they rest on are quoted in decisions.json)
  • units-go-to-the-project-of-their-network — The units of the source project go to the project of their network. A person states that the units of this source project go to the STACKIT project of the network they stand in. The network design maps a source network to a target project, and no map from a source project to a target project exists: the answer records the person's mapping, changes nothing in the draft, which keeps its own project resolver, and closes the settings of that project. (sources: https://github.com/stackitcloud/terraform-provider-stackit/blob/v0.119.0/docs/resources/network.md; the words they rest on are quoted in decisions.json)
Recommended option
None.
Status
Open: not decided yet.
Map each source location of the estate to a STACKIT region open input

4 units: google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server and 2 more · owner role Platform Architect · required by phase: before the pilot · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
  • map-source-locations-to-the-draft-region Map every source location of the estate to the one STACKIT region the draft builds in (the DEFAULT): the draft already carries it out, so the answer frees the steps that wait for it; in this run it frees 1 step of the plan by itself
  • choose-the-region-of-each-location Choose the STACKIT region of each source location: it changes the draft: answer target.region.source_location in the inputs file (--inputs) and run again; the steps stay held until the draft carries it; in this run it frees no step of the plan
Applications touched
migrate (PROPOSED), server (PROPOSED)
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
waves 1 to 4 · steps in data services
What an answer frees
The answer that frees most frees 1 step of the plan (none of them automated) by itself.
Answer
not answered: no decisions file was given with this run
What the draft does
The draft does not carry the setting on google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server, google_sql_database_instance.postgres and google_storage_bucket.media. The draft holds MAN/estate/SOURCE_REGION_MAPPING until this decision is answered by an answer that frees it.
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 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 region the service, job or worker pool runs in (google 8.4.0 `location`). A person confirms the region — REVIEW (critical, the value is not verified against the target). The region of the instance (google 8.4.0 `region`; unset means the provider's region). A single-region location (us-central1, europe-west3, ...), or one not visible statically: the draft sets no region on stackit_objectstorage_bucket (`region`: "if not defined, the provider region is used", pinned provider), so the bucket lands in the STACKIT region the user sets, not in the source's — a person confirms the residency — REVIEW.
Ways out
  1. Map every source location of the estate to the one STACKIT region the draft builds in; effect: The draft builds every unit in the one region of the estate, and that is what it does with no answer. STACKIT hosts its regions in Germany and Austria, each physically separate from the others, so the region is not shown to hold the residency a source location gave: the option states where the draft builds and claims no equal residency. A review of this option records the confirmation and closes no setting; an answer of target.region.source_location for each location closes the settings of that location.
  2. Choose the STACKIT region of each source location; effect: An answer of target.region.source_location names the region of one source location, and the units whose location the scan cannot read are one more subject of the same topic. An answer that names the region the draft builds in closes the settings of that location. The draft builds in one region, so an answer that names another region is recorded, and read by the network design, and closes nothing until the estate is built there (target.region). Whether a region holds the residency of a source location stays the person's statement.; the draft is generated again with it
What closes it
A person confirms the STACKIT region of the SKE cluster the workload runs on holds the residency the source region gave, since no mapping between Google and STACKIT regions is evidenced. A person confirms the STACKIT region of the instance (and of a read replica, decided with its primary) holds the residency the source region gave. A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Map each source location of the estate to a STACKIT region for google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server, google_sql_database_instance.postgres and google_storage_bucket.media: choose one of the 2 options, in the inputs file given with --inputs (the stubs are in inputs-template.yaml), once for each source location: that closes the settings of the location.
Technical details

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

Decision
source region mapping, of the convert part of the draft
The plan’s reasons
  • The source places its units in a location the scan cannot read (the value comes from an input a plan can change, or the source does not state it). No mapping between Google and STACKIT regions is evidenced, so the region the draft builds in is not shown to hold the residency of a source location: a person states it once for the estate, by answering target.region.source_location for each location.
  • the residency requirement behind each source location (a law, a contract, a policy) and the STACKIT region that meets it
Applications of your file
None named.
Plan decisions
5
Show the 5 plan decisions
  • alias convert:estate:source_location:SOURCE_REGION_MAPPING
  • alias google_cloud_run_v2_job.migrate|location-residency
  • alias google_cloud_run_v2_service.server|location-residency
  • alias google_sql_database_instance.postgres|region-residency
  • alias google_storage_bucket.media|bucket-region
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.
  • map-source-locations-to-the-draft-region — Map every source location of the estate to the one STACKIT region the draft builds in. DEFAULT (change if wrong): the draft carries this option out and the record stays open. The draft builds every unit in the one region of the estate, and that is what it does with no answer. STACKIT hosts its regions in Germany and Austria, each physically separate from the others, so the region is not shown to hold the residency a source location gave: the option states where the draft builds and claims no equal residency. A review of this option records the confirmation and closes no setting; an answer of target.region.source_location for each location closes the settings of that location. (sources: https://docs.stackit.cloud/platform/regions/, https://docs.stackit.cloud/platform/regions/; the words they rest on are quoted in decisions.json)
  • choose-the-region-of-each-location — Choose the STACKIT region of each source location. An answer of target.region.source_location names the region of one source location, and the units whose location the scan cannot read are one more subject of the same topic. An answer that names the region the draft builds in closes the settings of that location. The draft builds in one region, so an answer that names another region is recorded, and read by the network design, and closes nothing until the estate is built there (target.region). Whether a region holds the residency of a source location stays the person's statement. (sources: https://docs.stackit.cloud/platform/regions/, https://docs.stackit.cloud/platform/regions/; the words they rest on are quoted in decisions.json)
Recommended option
None.
DEFAULT (change if wrong)
  • map-source-locations-to-the-draft-region, answered by DEFAULT: the draft builds every unit in the STACKIT region eu01, which is what it does with no answer. That is a region the catalogue of this build lists and no claim that it holds the residency of the source: only an answer of target.region.source_location closes the settings this decision holds.
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)

33 records: 33 open input
Review the critical settings of a firebase hosting site (Identity Architect) open input

1 unit: google_firebase_hosting_site.client · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 data services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the project of the firebase hosting site: The draft does not carry the setting on google_firebase_hosting_site.client; a manual step stands for it (MAN/unit/google_firebase_hosting_site.client).
Still open
Confirm the project of the firebase hosting site: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm the project of the firebase hosting site: 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. google_firebase_hosting_site.project (identity access): The Google Cloud project the resource is created in. IAM policy, organisation policy and audit configuration are inherited from the project, so it decides who can act on the resource and what it is isolated from. The unit names google_firebase_project.default (google_firebase_project) through this setting (the target does not carry it: it is in the class manual review), so what the reference becomes is part of this setting.
What closes it
Confirm the project of the firebase hosting site: A person decides which STACKIT project, and with it which access rules, holds the replacement.
Next action
Confirm the project of the firebase hosting site: This setting follows the decision on the unit: A person decides which STACKIT project, and with it which access rules, holds the replacement.
Technical details

Record DEC-IAM-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.firebase_hosting_site contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_firebase_hosting_site.client|tc-firebase-hosting-site-project
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm the project of the firebase hosting site (tc-firebase-hosting-site-project): Open: no decision of the record has been taken. The knowledge base cannot decide "the project of the firebase hosting site" of the gcp.firebase_hosting_site 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person decides which STACKIT project, and with it which access rules, holds the replacement.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a firebase hosting site (Platform Architect) open input

1 unit: google_firebase_hosting_site.client · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 data services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the site ID of the firebase hosting site: The draft does not carry the setting on google_firebase_hosting_site.client; a manual step stands for it (MAN/unit/google_firebase_hosting_site.client).
Still open
Confirm the site ID of the firebase hosting site: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm the site ID of the firebase hosting site: 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. google_firebase_hosting_site.site_id (workload compatibility): A globally unique identifier for the Hosting site; other settings, bindings and clients refer to the object by this id. Firebase Hosting has no STACKIT counterpart, so the site is rebuilt on Object Storage with a CDN.
What closes it
Confirm the site ID of the firebase hosting site: A person sets this up on the bucket, the CDN distribution and the domain that replace Firebase Hosting, or decides to drop it, and records the decision.
Next action
Confirm the site ID of the firebase hosting site: This setting follows the decision on the unit: A person sets this up on the bucket, the CDN distribution and the domain that replace Firebase Hosting, or decides to drop it, and records the decision.
Technical details

Record DEC-OPS-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.firebase_hosting_site contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_firebase_hosting_site.client|tcr-firebase-hosting-site-site-id
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm the site ID of the firebase hosting site (tcr-firebase-hosting-site-site-id): Open: no decision of the record has been taken. The knowledge base cannot decide "the site ID of the firebase hosting site" of the gcp.firebase_hosting_site 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person sets this up on the bucket, the CDN distribution and the domain that replace Firebase Hosting, or decides to drop it, and records the decision.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Identity Architect) open input

1 unit: google_cloud_run_v2_job.migrate · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
migrate (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the service identity setting: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/service-identity).
Still open
Review the service identity setting: the target behaviour of this setting is not established. Review the service identity setting: Whether the draft carries this setting is decided by its semantic ledger entry "workload identity", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). The Google service account the workload runs as. target.workload.identity asks the customer which model the pods use.
What closes it
Review the service identity setting: The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.
Next action
Review the service identity setting: This setting follows the decision on the unit; it is not decided on its own.
Technical details

Record DEC-IAM-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloud_run_v2_job.migrate|service-identity
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the service identity setting (service-identity): Open: no decision of the record has been taken. The knowledge base cannot decide "service-identity" of the gcp.cloud_run 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: This setting follows the decision on the unit; it is not decided on its own.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Network Architect) open input

1 unit: google_cloud_run_v2_job.migrate · owner role Network Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
2 options across its settings, each with its trade-off under Technical details
Applications touched
migrate (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the cloud run v2 job network exposure setting: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/cloud-run-v2-job-network-exposure).
Still open
Review the cloud run v2 job network exposure setting: the target behaviour of this setting is not established. Review the cloud run v2 job network exposure 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. template.template.vpc_access.egress, template.template.vpc_access.network_interfaces.network, template.template.vpc_access.network_interfaces.subnetwork, template.template.volumes.cloud_sql_instance.instances (network exposure) — what the resource is reachable from and what it can reach. The draft names these settings NOT CARRIED: which database the job mounts and which network its egress goes through are re-created on the target (a database connection, the network of the workload) by a person. A person decides: REVIEW.
Ways out
  1. Review the cloud run v2 job network exposure setting: Carry the setting on Kubernetes Job/CronJob on SKE; effect: You design how Kubernetes Job/CronJob on SKE carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
  2. Review the cloud run v2 job network exposure setting: Accept the difference; effect: The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
What closes it
Review the cloud run v2 job network exposure setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the cloud run v2 job network exposure setting: Review the cloud run v2 job network exposure setting for google_cloud_run_v2_job.migrate: Decide how Kubernetes Job/CronJob on SKE carries this setting, or accept the difference. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloud_run_v2_job.migrate|cloud-run-v2-job-network-exposure
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the cloud run v2 job network exposure setting (cloud-run-v2-job-network-exposure): Open: no decision of the record has been taken. The knowledge base cannot decide "cloud-run-v2-job-network-exposure" of the gcp.cloud_run 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 cloud run v2 job network exposure setting for google_cloud_run_v2_job.migrate: Decide how Kubernetes Job/CronJob on SKE carries this setting, or accept the difference. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • derived-carry-on-the-target-ae560c1053b1 — Carry the setting on Kubernetes Job/CronJob on SKE. You design how Kubernetes Job/CronJob on SKE carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
    • derived-accept-the-difference-ae560c1053b1 — Accept the difference. The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Security Architect) open input

1 unit: google_cloud_run_v2_job.migrate · owner role Security Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
migrate (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Create the Kubernetes Secrets for the Secret Manager references: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/secrets).
Still open
Create the Kubernetes Secrets for the Secret Manager references: the target behaviour of this setting is not established. Create the Kubernetes Secrets for the Secret Manager 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. A Secret Manager reference in the environment becomes a secretKeyRef of the Deployment or Job and a secret volume a Kubernetes secret volume, and the head of the manifest lists the Secrets to create. The draft writes no Secret, because no value of a secret reaches an output.
What closes it
Create the Kubernetes Secrets for the Secret Manager references: A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator).
Next action
Create the Kubernetes Secrets for the Secret Manager references: Create the Kubernetes Secrets for the Secret Manager references for google_cloud_run_v2_job.migrate: A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator). Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloud_run_v2_job.migrate|secrets
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Create the Kubernetes Secrets for the Secret Manager references (secrets): Open: no decision of the record has been taken. The knowledge base cannot decide "secrets" of the gcp.cloud_run 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: Create the Kubernetes Secrets for the Secret Manager references for google_cloud_run_v2_job.migrate: A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator). Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service open input

1 unit: google_cloud_run_v2_service.server · owner role Platform Architect — named by its manual steps; the record states no owner · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
server (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the IAM policy grant setting: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect).
Still open
Review the IAM policy grant setting: the target behaviour of this setting is not established. Review the IAM policy grant setting: A check of the knowledge base (run iam 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). A full IAM policy (member/role bindings) is set directly on the service via policy_data (google 8.4.0); STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — REVIEW.
What closes it
Review the IAM policy grant setting: A person decides what this finding asks, and records the evidence or the decision. The finding says: A full IAM policy (member/role bindings) is set directly on the service via policy_data; STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — the draft carries no invocation check.
Next action
Review the IAM policy grant setting: Review the IAM policy grant setting for google_cloud_run_v2_service.server: A person decides what this finding asks, and records the evidence or the decision. The finding says: A full IAM policy (member/role bindings) is set directly on the service via policy_data; STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — the draft carries no invocation check. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloud_run_v2_service.server|iam-policy-grant
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the IAM policy grant setting (iam-policy-grant): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-policy-grant" of the gcp.cloud_run 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 policy grant setting for google_cloud_run_v2_service.server: A person decides what this finding asks, and records the evidence or the decision. The finding says: A full IAM policy (member/role bindings) is set directly on the service via policy_data; STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — the draft carries no invocation check. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Identity Architect) open input

1 unit: google_cloud_run_v2_service.server · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
server (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Decide who may invoke the service: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-identity-architect). Review the service identity setting: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-identity-architect).
Still open
Decide who may invoke the service: the target behaviour of this setting is not established Review the service identity setting: the target behaviour of this setting is not established. Decide who may invoke the service: 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. Cloud Run lets only callers with the invoker role through unless the service is made public. The draft carries no invocation check; the SKE exposure and the authentication of callers (application, authenticating proxy, or no exposure at all) are decided by a person. Review the service identity setting: Whether the draft carries this setting is decided by its semantic ledger entry "workload identity", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). The Google service account the workload runs as. target.workload.identity asks the customer which model the pods use.
What closes it
Decide who may invoke the service: A person decides how callers of the workload are authenticated (in the application, behind an authenticating proxy, or by no exposure at all) and how the SKE exposure is set, since the draft carries no invocation check. Review the service identity setting: The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.
Next action
Decide who may invoke the service: Decide who may invoke the service for google_cloud_run_v2_service.server: A person decides how callers of the workload are authenticated (in the application, behind an authenticating proxy, or by no exposure at all) and how the SKE exposure is set, since the draft carries no invocation check. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_cloud_run_v2_service.server|iam-invocation
  • alias google_cloud_run_v2_service.server|service-identity
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Decide who may invoke the service (iam-invocation): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-invocation" of the gcp.cloud_run 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 who may invoke the service for google_cloud_run_v2_service.server: A person decides how callers of the workload are authenticated (in the application, behind an authenticating proxy, or by no exposure at all) and how the SKE exposure is set, since the draft carries no invocation check. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the service identity setting (service-identity): Open: no decision of the record has been taken. The knowledge base cannot decide "service-identity" of the gcp.cloud_run 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: This setting follows the decision on the unit; it is not decided on its own.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Network Architect) open input

1 unit: google_cloud_run_v2_service.server · owner role Network Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
server (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Decide how the service connects to the database: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/cloud-sql-connection).
Still open
Decide how the service connects to the database: the target behaviour of this setting is not established. Decide how the service connects to the database: 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 Cloud SQL connection volume (a connector socket) has no counterpart: the workload connects to the migrated Flex instance endpoint over TLS.
What closes it
Decide how the service connects to the database: A person points the workload at the endpoint of the migrated database instance (a Flex or MariaDB instance) over TLS, because the Cloud SQL connector socket has no counterpart.
Next action
Decide how the service connects to the database: Decide how the service connects to the database for google_cloud_run_v2_service.server: A person points the workload at the endpoint of the migrated database instance (a Flex or MariaDB instance) over TLS, because the Cloud SQL connector socket has no counterpart. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloud_run_v2_service.server|cloud-sql-connection
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Decide how the service connects to the database (cloud-sql-connection): Open: no decision of the record has been taken. The knowledge base cannot decide "cloud-sql-connection" of the gcp.cloud_run 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 how the service connects to the database for google_cloud_run_v2_service.server: A person points the workload at the endpoint of the migrated database instance (a Flex or MariaDB instance) over TLS, because the Cloud SQL connector socket has no counterpart. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Security Architect) open input

1 unit: google_cloud_run_v2_service.server · owner role Security Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
server (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the environment settings: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-security-architect). Create the Kubernetes Secrets for the Secret Manager references: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-security-architect).
Still open
Confirm the environment settings: the target behaviour of this setting is not established Create the Kubernetes Secrets for the Secret Manager references: the target behaviour of this setting is not established. Confirm the environment settings: 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 writes the environment keys into the ConfigMap and the env of the Deployment or Job. A value is copied only when it is a quantity under a name that says so or a boolean, because any other value can hold a secret, so the rest of the values are a person's. Create the Kubernetes Secrets for the Secret Manager 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. A Secret Manager reference in the environment becomes a secretKeyRef of the Deployment or Job and a secret volume a Kubernetes secret volume, and the head of the manifest lists the Secrets to create. The draft writes no Secret, because no value of a secret reaches an output.
What closes it
Confirm the environment settings: A person fills in the values the manifest lists as not copied, in the ConfigMap on the cluster. Create the Kubernetes Secrets for the Secret Manager references: A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator).
Next action
Confirm the environment settings: Confirm the environment settings for google_cloud_run_v2_service.server: A person fills in the values the manifest lists as not copied, in the ConfigMap on the cluster. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_cloud_run_v2_service.server|environment
  • alias google_cloud_run_v2_service.server|secrets
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the environment settings (environment): Open: no decision of the record has been taken. The knowledge base cannot decide "environment" of the gcp.cloud_run 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 environment settings for google_cloud_run_v2_service.server: A person fills in the values the manifest lists as not copied, in the ConfigMap on the cluster. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Create the Kubernetes Secrets for the Secret Manager references (secrets): Open: no decision of the record has been taken. The knowledge base cannot decide "secrets" of the gcp.cloud_run 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: Create the Kubernetes Secrets for the Secret Manager references for google_cloud_run_v2_service.server: A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator). Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Identity Architect) open input

1 unit: google_cloudbuild_trigger.activategcb · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Review the build identity setting: The draft does not carry the setting on google_cloudbuild_trigger.activategcb; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.activategcb).
Still open
Review the build identity setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Review the build identity 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 service account the build (or the Pub/Sub push notification) runs as; STACKIT Git Pipelines has its own, differently-shaped identity model -- REVIEW.
What closes it
Review the build identity setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Review the build identity setting: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Technical details

Record DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-ACTIVATEGCB (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloudbuild_trigger.activategcb|build-identity
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the build identity setting (build-identity): Open: no decision of the record has been taken. The knowledge base cannot decide "build-identity" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Platform Architect) open input

1 unit: google_cloudbuild_trigger.activategcb · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm its dependency on the references: The draft does not carry the setting on google_cloudbuild_trigger.activategcb; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.activategcb). Choose the container image or artifact: The draft does not carry the setting on google_cloudbuild_trigger.activategcb; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.activategcb). Confirm the entry point of the function: The draft does not carry the setting on google_cloudbuild_trigger.activategcb; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.activategcb). Review the log destination setting: The draft does not carry the setting on google_cloudbuild_trigger.activategcb; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.activategcb).
Still open
Confirm its dependency on the references: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Choose the container image or artifact: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Confirm the entry point of the function: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Review the log destination setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm its dependency on the 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. google_cloudbuild_trigger and google_cloudbuild_worker_pool names other units or resources (google_cloudbuild_bitbucket_server_config, google_cloudbuild_worker_pool, google_cloudbuildv2_repository, google_compute_global_address, google_compute_network, google_developer_connect_git_repository_link, google_pubsub_topic, google_secret_manager_secret, google_secret_manager_secret_version, google_service_account, google_sourcerepo_repository, google_storage_bucket). A person confirms how the replacement carries the relation between this unit and the units it names, or accepts the difference. Choose the container image or artifact: 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. google_cloudbuild_trigger.build.step.name, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Confirm the entry point of the function: 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. google_cloudbuild_trigger.build.step.entrypoint, build.step.script, build.step.args, entry point (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Review the log destination 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 where/whether build logs are captured or exposed back to GitHub; STACKIT Git Pipelines' own logging model is different -- REVIEW.
What closes it
Confirm its dependency on the references: A person confirms how the replacement carries the relation, or accepts the difference. Choose the container image or artifact: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. Confirm the entry point of the function: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. Review the log destination setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Confirm its dependency on the references: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
Technical details

Record DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-ACTIVATEGCB (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias google_cloudbuild_trigger.activategcb|dep-references
  • alias google_cloudbuild_trigger.activategcb|deployment-artifact
  • alias google_cloudbuild_trigger.activategcb|entry-point
  • alias google_cloudbuild_trigger.activategcb|log-destination
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm its dependency on the references (dep-references): Open: no decision of the record has been taken. The knowledge base cannot decide "its dependency on the references" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
  2. Choose the container image or artifact (deployment-artifact): Open: no decision of the record has been taken. The knowledge base cannot decide "deployment-artifact" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
  3. Confirm the entry point of the function (entry-point): Open: no decision of the record has been taken. The knowledge base cannot decide "entry-point" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Follows the same decision on the unit as Choose the container image or artifact.
  4. Review the log destination setting (log-destination): Open: no decision of the record has been taken. The knowledge base cannot decide "log-destination" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Follows the same decision on the unit as Choose the container image or artifact.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Identity Architect) open input

1 unit: google_cloudbuild_trigger.init · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Review the build identity setting: The draft does not carry the setting on google_cloudbuild_trigger.init; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.init).
Still open
Review the build identity setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Review the build identity 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 service account the build (or the Pub/Sub push notification) runs as; STACKIT Git Pipelines has its own, differently-shaped identity model -- REVIEW.
What closes it
Review the build identity setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Review the build identity setting: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Technical details

Record DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-INIT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloudbuild_trigger.init|build-identity
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the build identity setting (build-identity): Open: no decision of the record has been taken. The knowledge base cannot decide "build-identity" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Platform Architect) open input

1 unit: google_cloudbuild_trigger.init · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm its dependency on the references: The draft does not carry the setting on google_cloudbuild_trigger.init; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.init). Choose the container image or artifact: The draft does not carry the setting on google_cloudbuild_trigger.init; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.init). Confirm the entry point of the function: The draft does not carry the setting on google_cloudbuild_trigger.init; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.init). Review the log destination setting: The draft does not carry the setting on google_cloudbuild_trigger.init; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.init).
Still open
Confirm its dependency on the references: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Choose the container image or artifact: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Confirm the entry point of the function: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Review the log destination setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm its dependency on the 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. google_cloudbuild_trigger and google_cloudbuild_worker_pool names other units or resources (google_cloudbuild_bitbucket_server_config, google_cloudbuild_worker_pool, google_cloudbuildv2_repository, google_compute_global_address, google_compute_network, google_developer_connect_git_repository_link, google_pubsub_topic, google_secret_manager_secret, google_secret_manager_secret_version, google_service_account, google_sourcerepo_repository, google_storage_bucket). A person confirms how the replacement carries the relation between this unit and the units it names, or accepts the difference. Choose the container image or artifact: 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. google_cloudbuild_trigger.build.step.name, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Confirm the entry point of the function: 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. google_cloudbuild_trigger.build.step.entrypoint, build.step.script, build.step.args, entry point (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). The unit names google_firebase_hosting_site.client (google_firebase_hosting_site) 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. Review the log destination 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 where/whether build logs are captured or exposed back to GitHub; STACKIT Git Pipelines' own logging model is different -- REVIEW.
What closes it
Confirm its dependency on the references: A person confirms how the replacement carries the relation, or accepts the difference. Choose the container image or artifact: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. Confirm the entry point of the function: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. Review the log destination setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Confirm its dependency on the references: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
Technical details

Record DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-INIT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
4
Show the 4 open critical semantics
  • alias google_cloudbuild_trigger.init|dep-references
  • alias google_cloudbuild_trigger.init|deployment-artifact
  • alias google_cloudbuild_trigger.init|entry-point
  • alias google_cloudbuild_trigger.init|log-destination
Options
None listed.
Settings
4 critical settings of the unit, each with its own reason, state and options:
  1. Confirm its dependency on the references (dep-references): Open: no decision of the record has been taken. The knowledge base cannot decide "its dependency on the references" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
  2. Choose the container image or artifact (deployment-artifact): Open: no decision of the record has been taken. The knowledge base cannot decide "deployment-artifact" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
  3. Confirm the entry point of the function (entry-point): Open: no decision of the record has been taken. The knowledge base cannot decide "entry-point" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Follows the same decision on the unit as Choose the container image or artifact.
  4. Review the log destination setting (log-destination): Open: no decision of the record has been taken. The knowledge base cannot decide "log-destination" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Follows the same decision on the unit as Choose the container image or artifact.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Identity Architect) open input

1 unit: google_cloudbuild_trigger.placeholder · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Review the build identity setting: The draft does not carry the setting on google_cloudbuild_trigger.placeholder; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.placeholder).
Still open
Review the build identity setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Review the build identity 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 service account the build (or the Pub/Sub push notification) runs as; STACKIT Git Pipelines has its own, differently-shaped identity model -- REVIEW.
What closes it
Review the build identity setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Review the build identity setting: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Technical details

Record DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloudbuild_trigger.placeholder|build-identity
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the build identity setting (build-identity): Open: no decision of the record has been taken. The knowledge base cannot decide "build-identity" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Build (Platform Architect) open input

1 unit: google_cloudbuild_trigger.placeholder · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm its dependency on the references: The draft does not carry the setting on google_cloudbuild_trigger.placeholder; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.placeholder). Choose the container image or artifact: The draft does not carry the setting on google_cloudbuild_trigger.placeholder; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.placeholder). Review the log destination setting: The draft does not carry the setting on google_cloudbuild_trigger.placeholder; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.placeholder).
Still open
Confirm its dependency on the references: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Choose the container image or artifact: the draft writes nothing for the unit: what the setting becomes depends on what replaces it Review the log destination setting: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm its dependency on the 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. google_cloudbuild_trigger and google_cloudbuild_worker_pool names other units or resources (google_cloudbuild_bitbucket_server_config, google_cloudbuild_worker_pool, google_cloudbuildv2_repository, google_compute_global_address, google_compute_network, google_developer_connect_git_repository_link, google_pubsub_topic, google_secret_manager_secret, google_secret_manager_secret_version, google_service_account, google_sourcerepo_repository, google_storage_bucket). A person confirms how the replacement carries the relation between this unit and the units it names, or accepts the difference. Choose the container image or artifact: 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. google_cloudbuild_trigger.build.step.name, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Review the log destination 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 where/whether build logs are captured or exposed back to GitHub; STACKIT Git Pipelines' own logging model is different -- REVIEW.
What closes it
Confirm its dependency on the references: A person confirms how the replacement carries the relation, or accepts the difference. Choose the container image or artifact: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting. Review the log destination setting: A person decides the setting with what replaces the unit once the architect has chosen it, or the knowledge base gains a rule that decides this setting.
Next action
Confirm its dependency on the references: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
Technical details

Record DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
3
Show the 3 open critical semantics
  • alias google_cloudbuild_trigger.placeholder|dep-references
  • alias google_cloudbuild_trigger.placeholder|deployment-artifact
  • alias google_cloudbuild_trigger.placeholder|log-destination
Options
None listed.
Settings
3 critical settings of the unit, each with its own reason, state and options:
  1. Confirm its dependency on the references (dep-references): Open: no decision of the record has been taken. The knowledge base cannot decide "its dependency on the references" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person confirms how the replacement carries the relation, or accepts the difference.
  2. Choose the container image or artifact (deployment-artifact): Open: no decision of the record has been taken. The knowledge base cannot decide "deployment-artifact" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
  3. Review the log destination setting (log-destination): Open: no decision of the record has been taken. The knowledge base cannot decide "log-destination" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Follows the same decision on the unit as Choose the container image or artifact.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Pub/Sub topic (Platform Architect) open input

1 unit: google_pubsub_topic.faux · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 holds an affected unit
Wave
wave 1 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the name of the resource on the target: The draft does not carry the setting on google_pubsub_topic.faux; a manual step stands for it (MAN/semantic/google_pubsub_topic.faux/tc-name).
Still open
Confirm the name of the resource on the target: the target behaviour of this setting is not established. Confirm the name of the resource 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. google_pubsub_topic.name: The topic's own resource name, which publishers and subscribers address it by; access to it is controlled by IAM, not by the name string itself, and a changed name breaks every client that uses the old one.
What closes it
Confirm the name of the resource on the target: A person confirms the topic name the replacement messaging service carries against the publishers and subscribers that use it, or accepts the new name.
Next action
Confirm the name of the resource on the target: Confirm the name of the resource on the target for google_pubsub_topic.faux: A person confirms the topic name the replacement messaging service carries against the publishers and subscribers that use it, or accepts the new name. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-GOOGLE-PUBSUB-TOPIC-FAUX (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.pubsub_topic contract
Applications of your file
None named.
Affected units
1 google_pubsub_topic.faux
Open critical semantics (unit|semantic)
1 alias google_pubsub_topic.faux|tc-name
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm the name of the resource on the target (tc-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the Pub/Sub topic" of the gcp.pubsub_topic 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 name of the resource on the target for google_pubsub_topic.faux: A person confirms the topic name the replacement messaging service carries against the publishers and subscribers that use it, or accepts the new name. 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 Secret Manager secret (Identity Architect) open input

1 unit: google_secret_manager_secret.django_admin_password · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
migrate (PROPOSED)
Wave
wave 2 · steps in security
Answer
not answered: no decisions file was given with this run
What the draft does
Decide how the secrets are carried: The draft does not carry the setting on google_secret_manager_secret.django_admin_password; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_admin_password/secret-settings).
Still open
Decide how the secrets are carried: the target behaviour of this setting is not established. Decide how the secrets are carried: 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 settings of the secret beside its value (secret-value): STACKIT replicates it itself (no replica locations or per-replica keys), tags and version states have no counterpart, and IAM members and policy map to Secrets Manager users (read-only or read-write for a whole instance) or to experimental role bindings on a secret group — REVIEW.
What closes it
Decide how the secrets are carried: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance.
Next action
Decide how the secrets are carried: Decide how the secrets are carried for google_secret_manager_secret.django_admin_password: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-ADMIN-PASSWORD (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.secret contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_secret_manager_secret.django_admin_password|secret-settings
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Decide how the secrets are carried (secret-settings): Open: no decision of the record has been taken. The knowledge base cannot decide "secret-settings" of the gcp.secret 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 how the secrets are carried for google_secret_manager_secret.django_admin_password: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance. 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 Secret Manager secret (Security Architect) open input

1 unit: google_secret_manager_secret.django_admin_password · owner role Security Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
migrate (PROPOSED)
Wave
wave 2 · steps in security
Answer
not answered: no decisions file was given with this run
What the draft does
Provide the values of the secrets: The draft does not carry the setting on google_secret_manager_secret.django_admin_password; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_admin_password/open-settings-security-architect). Confirm the name of the secret: The draft does not carry the setting on google_secret_manager_secret.django_admin_password; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_admin_password/open-settings-security-architect).
Still open
Provide the values of the secrets: the target behaviour of this setting is not established Confirm the name of the secret: the target behaviour of this setting is not established. Provide the values of the secrets: 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. google_secret_manager_secret_version.secret_data: the value of the secret. StackToIT never reads it and never writes it into the draft; the API step of the secret writes the document the customer supplies. Confirm the name of the secret: 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. google_secret_manager_secret.secret_id: The secret's own resource identifier; access to the secret's value is controlled by IAM bindings and replication/encryption settings, not by the id string itself.
What closes it
Provide the values of the secrets: A person decides where the value comes from, supplies the document and the step has run. Confirm the name of the secret: A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name.
Next action
Provide the values of the secrets: Provide the values of the secrets for google_secret_manager_secret.django_admin_password: A person decides where the value comes from, supplies the document and the step has run. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-ADMIN-PASSWORD (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.secret contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_secret_manager_secret.django_admin_password|secret-value
  • alias google_secret_manager_secret.django_admin_password|tcr-secret-id
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Provide the values of the secrets (secret-value): Open: no decision of the record has been taken. The knowledge base cannot decide "secret-value" of the gcp.secret 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: Provide the values of the secrets for google_secret_manager_secret.django_admin_password: A person decides where the value comes from, supplies the document and the step has run. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the name of the secret (tcr-secret-id): Open: no decision of the record has been taken. The knowledge base cannot decide "the secret ID of the Secret Manager secret" of the gcp.secret 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 name of the secret for google_secret_manager_secret.django_admin_password: A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name. 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 Secret Manager secret (Identity Architect) open input

1 unit: google_secret_manager_secret.django_settings · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_secret_manager_secret.django_settings is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 3 · steps in security
Answer
not answered: no decisions file was given with this run
What the draft does
Decide how the secrets are carried: The draft does not carry the setting on google_secret_manager_secret.django_settings; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_settings/secret-settings).
Still open
Decide how the secrets are carried: the target behaviour of this setting is not established. Decide how the secrets are carried: 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 settings of the secret beside its value (secret-value): STACKIT replicates it itself (no replica locations or per-replica keys), tags and version states have no counterpart, and IAM members and policy map to Secrets Manager users (read-only or read-write for a whole instance) or to experimental role bindings on a secret group — REVIEW.
What closes it
Decide how the secrets are carried: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance.
Next action
Decide how the secrets are carried: Decide how the secrets are carried for google_secret_manager_secret.django_settings: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-SETTINGS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.secret contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_secret_manager_secret.django_settings|secret-settings
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Decide how the secrets are carried (secret-settings): Open: no decision of the record has been taken. The knowledge base cannot decide "secret-settings" of the gcp.secret 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 how the secrets are carried for google_secret_manager_secret.django_settings: A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance. 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 Secret Manager secret (Security Architect) open input

1 unit: google_secret_manager_secret.django_settings · owner role Security Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_secret_manager_secret.django_settings is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 3 · steps in security
Answer
not answered: no decisions file was given with this run
What the draft does
Provide the values of the secrets: The draft does not carry the setting on google_secret_manager_secret.django_settings; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_settings/open-settings-security-architect). Confirm the name of the secret: The draft does not carry the setting on google_secret_manager_secret.django_settings; a manual step stands for it (MAN/semantic/google_secret_manager_secret.django_settings/open-settings-security-architect).
Still open
Provide the values of the secrets: the target behaviour of this setting is not established Confirm the name of the secret: the target behaviour of this setting is not established. Provide the values of the secrets: 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. google_secret_manager_secret_version.secret_data: the value of the secret. StackToIT never reads it and never writes it into the draft; the API step of the secret writes the document the customer supplies. Confirm the name of the secret: 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. google_secret_manager_secret.secret_id: The secret's own resource identifier; access to the secret's value is controlled by IAM bindings and replication/encryption settings, not by the id string itself.
What closes it
Provide the values of the secrets: A person decides where the value comes from, supplies the document and the step has run. Confirm the name of the secret: A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name.
Next action
Provide the values of the secrets: Provide the values of the secrets for google_secret_manager_secret.django_settings: A person decides where the value comes from, supplies the document and the step has run. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-SETTINGS (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.secret contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_secret_manager_secret.django_settings|secret-value
  • alias google_secret_manager_secret.django_settings|tcr-secret-id
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Provide the values of the secrets (secret-value): Open: no decision of the record has been taken. The knowledge base cannot decide "secret-value" of the gcp.secret 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: Provide the values of the secrets for google_secret_manager_secret.django_settings: A person decides where the value comes from, supplies the document and the step has run. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the name of the secret (tcr-secret-id): Open: no decision of the record has been taken. The knowledge base cannot decide "the secret ID of the Secret Manager secret" of the gcp.secret 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 name of the secret for google_secret_manager_secret.django_settings: A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Status
Open: not decided yet.

What the 4 records below share:

What the draft does
The draft writes the service account, and a STACKIT role assignment of the account for each grant on a project, a folder or an organisation whose role and members are visible statically and that has no condition; a grant that lets another account act as it is written as an Act-As assignment. A grant with a condition, a policy document, a repeated grant and a grant whose role or members are not visible statically are listed in the draft and not written.
Still open
Review the account name setting: the target behaviour of this setting is not established Map the IAM roles of the service account to STACKIT roles: Which STACKIT role gives a member the access the Google role gave on the service account, and that no member gets more. Review the account name setting: A check of the knowledge base (sa account id not visible) 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 ID becomes the stackit_service_account name (shortened to the STACKIT name rules; pinned provider) — TRANSFORMED; the e-mail address changes. An ID not visible statically (or a repeated account) is named NOT CARRIED — REVIEW (check sa-account-id-not-visible). Map the IAM roles of the service account to 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. The grants of the estate that name the account: a grant on a project, a folder or an organisation is written as a STACKIT role assignment of the account when its role and members are visible statically and it has no condition, and a grant that lets another account act as it is written as an Act-As assignment. A Google role is written as a STACKIT role only where the mapping shows the STACKIT role holds the same permissions or fewer on a project; every other role is an input that names the candidates, and a person confirms each. A binding or a policy is authoritative (it removes the members of its role that it does not list) and a role assignment only adds, which the draft says on each: members that hold the role outside the configuration keep it on STACKIT until a person removes them.
Ways out
  1. Map the IAM roles of the service account to STACKIT roles: Bind a role of the STACKIT service account to the member; needs the Google roles granted on the service account and what each one allowed, the roles the authorization API lists for the STACKIT service account; effect: A role assignment on a STACKIT service account gives a role the authorization API lists for that account to a user, a service account or a client; given to a service account, it grants the Act-As permission, which lets that account impersonate the target account. A person re-maps each Google role on the account (using it, creating its keys, managing it) to a role of the STACKIT service account and binds it to the member. The assignment carries no condition and has no setting that removes the other holders of a role, so if the Google resource was authoritative (a binding for its role, a policy for the whole account) the replacing effect is not carried: a person lists who else holds a role on the account and removes what the source did not list. The resource is part of an experimental feature that is likely to change or be removed. The documents read do not state how a person, as opposed to a service account, acts as the account.; risk: A role chosen too wide lets a member act as the account more than the source allowed.
What closes it
Review the account name setting: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact. Map the IAM roles of the service account to STACKIT roles: The knowledge base's note on this setting states no closing condition; it is done when a person has chosen a way out above, recorded the choice, and the target is checked as the verification says. Map the IAM roles of the service account to STACKIT roles: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Verification: Map the IAM roles of the service account to STACKIT roles: each member can do what the source role allowed on the service account and nothing more, tried on the target.
Answer
not answered: no decisions file was given with this run
Review the critical settings of a service account (Identity Architect) open input

1 unit: google_service_account.automation · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
migrate (PROPOSED)
Wave
wave 1 · steps in security
What the draft does
Review the account name setting: The draft does not carry the setting on google_service_account.automation; a manual step stands for it (MAN/semantic/google_service_account.automation/open-settings). Map the IAM roles of the service account to STACKIT roles: The draft does not carry the setting on google_service_account.automation; a manual step stands for it (MAN/semantic/google_service_account.automation/open-settings).
Next action
Review the account name setting: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
Technical details

Record DEC-IAM-GOOGLE-SERVICE-ACCOUNT-AUTOMATION (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.service_account contract
Why it exists
The knowledge base cannot decide 2 critical settings of google_service_account.automation: for each, a person chooses what the STACKIT target does, or accepts the difference. Each setting is an item of this record with its own reason, members and review state. A review of this record is the architect's answer beside the engine's reading; it closes nothing. The review step of the execution plan for these settings is MAN/semantic/google_service_account.automation/open-settings.
  • the members that act as or manage the service account
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_service_account.automation|account-name
  • alias google_service_account.automation|role-bindings
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the account name setting (account-name): Open: no decision of the record has been taken. The knowledge base cannot decide "account-name" of the gcp.service_account 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: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
  2. Map the IAM roles of the service account to STACKIT roles (role-bindings): Open: no decision of the record has been taken. The knowledge base cannot decide "role-bindings" of the gcp.service_account 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: Outside the draft, for google_service_account.automation: The grants that name the account become STACKIT role assignments where the role and members are readable and the grant has no condition, and the draft lists the others. A Google role is written as a STACKIT role only where the STACKIT role holds the same permissions or fewer; for every other role a person confirms the choice. A grant that lets another account act as this one, or that is authoritative, must be reviewed: list who else holds access on the target and remove what the source did not list.
    • bind-a-role-on-the-service-account — Bind a role of the STACKIT service account to the member. A role assignment on a STACKIT service account gives a role the authorization API lists for that account to a user, a service account or a client; given to a service account, it grants the Act-As permission, which lets that account impersonate the target account. A person re-maps each Google role on the account (using it, creating its keys, managing it) to a role of the STACKIT service account and binds it to the member. The assignment carries no condition and has no setting that removes the other holders of a role, so if the Google resource was authoritative (a binding for its role, a policy for the whole account) the replacing effect is not carried: a person lists who else holds a role on the account and removes what the source did not list. The resource is part of an experimental feature that is likely to change or be removed. The documents read do not state how a person, as opposed to a service account, acts as the account.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a service account (Identity Architect) open input

1 unit: google_service_account.client · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
none: no applications file was given and no suggested group holds an affected unit
Wave
wave 1 · steps in security
What the draft does
Review the account name setting: The draft does not carry the setting on google_service_account.client; a manual step stands for it (MAN/semantic/google_service_account.client/open-settings). Map the IAM roles of the service account to STACKIT roles: The draft does not carry the setting on google_service_account.client; a manual step stands for it (MAN/semantic/google_service_account.client/open-settings).
Next action
Review the account name setting: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
Technical details

Record DEC-IAM-GOOGLE-SERVICE-ACCOUNT-CLIENT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.service_account contract
Why it exists
The knowledge base cannot decide 2 critical settings of google_service_account.client: for each, a person chooses what the STACKIT target does, or accepts the difference. Each setting is an item of this record with its own reason, members and review state. A review of this record is the architect's answer beside the engine's reading; it closes nothing. The review step of the execution plan for these settings is MAN/semantic/google_service_account.client/open-settings.
  • the members that act as or manage the service account
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_service_account.client|account-name
  • alias google_service_account.client|role-bindings
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the account name setting (account-name): Open: no decision of the record has been taken. The knowledge base cannot decide "account-name" of the gcp.service_account 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: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
  2. Map the IAM roles of the service account to STACKIT roles (role-bindings): Open: no decision of the record has been taken. The knowledge base cannot decide "role-bindings" of the gcp.service_account 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: Outside the draft, for google_service_account.client: The grants that name the account become STACKIT role assignments where the role and members are readable and the grant has no condition, and the draft lists the others. A Google role is written as a STACKIT role only where the STACKIT role holds the same permissions or fewer; for every other role a person confirms the choice. A grant that lets another account act as this one, or that is authoritative, must be reviewed: list who else holds access on the target and remove what the source did not list.
    • bind-a-role-on-the-service-account — Bind a role of the STACKIT service account to the member. A role assignment on a STACKIT service account gives a role the authorization API lists for that account to a user, a service account or a client; given to a service account, it grants the Act-As permission, which lets that account impersonate the target account. A person re-maps each Google role on the account (using it, creating its keys, managing it) to a role of the STACKIT service account and binds it to the member. The assignment carries no condition and has no setting that removes the other holders of a role, so if the Google resource was authoritative (a binding for its role, a policy for the whole account) the replacing effect is not carried: a person lists who else holds a role on the account and removes what the source did not list. The resource is part of an experimental feature that is likely to change or be removed. The documents read do not state how a person, as opposed to a service account, acts as the account.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a service account (Identity Architect) open input

1 unit: google_service_account.init · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
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 security
What the draft does
Review the account name setting: The draft does not carry the setting on google_service_account.init; a manual step stands for it (MAN/semantic/google_service_account.init/open-settings). Map the IAM roles of the service account to STACKIT roles: The draft does not carry the setting on google_service_account.init; a manual step stands for it (MAN/semantic/google_service_account.init/open-settings).
Next action
Review the account name setting: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
Technical details

Record DEC-IAM-GOOGLE-SERVICE-ACCOUNT-INIT (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.service_account contract
Why it exists
The knowledge base cannot decide 2 critical settings of google_service_account.init: for each, a person chooses what the STACKIT target does, or accepts the difference. Each setting is an item of this record with its own reason, members and review state. A review of this record is the architect's answer beside the engine's reading; it closes nothing. 2 of them are on units that exist only if a plan-time input holds: the decision applies in a plan that creates them. The review step of the execution plan for these settings is MAN/semantic/google_service_account.init/open-settings.
  • the members that act as or manage the service account
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_service_account.init|account-name
  • alias google_service_account.init|role-bindings
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the account name setting (account-name): Open: no decision of the record has been taken. The knowledge base cannot decide "account-name" of the gcp.service_account 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
  2. Map the IAM roles of the service account to STACKIT roles (role-bindings): Open: no decision of the record has been taken. The knowledge base cannot decide "role-bindings" of the gcp.service_account 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: Outside the draft, for google_service_account.init: The grants that name the account become STACKIT role assignments where the role and members are readable and the grant has no condition, and the draft lists the others. A Google role is written as a STACKIT role only where the STACKIT role holds the same permissions or fewer; for every other role a person confirms the choice. A grant that lets another account act as this one, or that is authoritative, must be reviewed: list who else holds access on the target and remove what the source did not list.
    • bind-a-role-on-the-service-account — Bind a role of the STACKIT service account to the member. A role assignment on a STACKIT service account gives a role the authorization API lists for that account to a user, a service account or a client; given to a service account, it grants the Act-As permission, which lets that account impersonate the target account. A person re-maps each Google role on the account (using it, creating its keys, managing it) to a role of the STACKIT service account and binds it to the member. The assignment carries no condition and has no setting that removes the other holders of a role, so if the Google resource was authoritative (a binding for its role, a policy for the whole account) the replacing effect is not carried: a person lists who else holds a role on the account and removes what the source did not list. The resource is part of an experimental feature that is likely to change or be removed. The documents read do not state how a person, as opposed to a service account, acts as the account.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a service account (Identity Architect) open input

1 unit: google_service_account.server · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
1 option across its settings, each with its trade-off under Technical details
Applications touched
server (PROPOSED)
Wave
wave 1 · steps in security
What the draft does
Review the account name setting: The draft does not carry the setting on google_service_account.server; a manual step stands for it (MAN/semantic/google_service_account.server/open-settings). Map the IAM roles of the service account to STACKIT roles: The draft does not carry the setting on google_service_account.server; a manual step stands for it (MAN/semantic/google_service_account.server/open-settings).
Next action
Review the account name setting: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
Technical details

Record DEC-IAM-GOOGLE-SERVICE-ACCOUNT-SERVER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.service_account contract
Why it exists
The knowledge base cannot decide 2 critical settings of google_service_account.server: for each, a person chooses what the STACKIT target does, or accepts the difference. Each setting is an item of this record with its own reason, members and review state. A review of this record is the architect's answer beside the engine's reading; it closes nothing. The review step of the execution plan for these settings is MAN/semantic/google_service_account.server/open-settings.
  • the members that act as or manage the service account
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_service_account.server|account-name
  • alias google_service_account.server|role-bindings
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the account name setting (account-name): Open: no decision of the record has been taken. The knowledge base cannot decide "account-name" of the gcp.service_account 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: This setting follows the decision on the unit: A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.
  2. Map the IAM roles of the service account to STACKIT roles (role-bindings): Open: no decision of the record has been taken. The knowledge base cannot decide "role-bindings" of the gcp.service_account 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: Outside the draft, for google_service_account.server: The grants that name the account become STACKIT role assignments where the role and members are readable and the grant has no condition, and the draft lists the others. A Google role is written as a STACKIT role only where the STACKIT role holds the same permissions or fewer; for every other role a person confirms the choice. A grant that lets another account act as this one, or that is authoritative, must be reviewed: list who else holds access on the target and remove what the source did not list.
    • bind-a-role-on-the-service-account — Bind a role of the STACKIT service account to the member. A role assignment on a STACKIT service account gives a role the authorization API lists for that account to a user, a service account or a client; given to a service account, it grants the Act-As permission, which lets that account impersonate the target account. A person re-maps each Google role on the account (using it, creating its keys, managing it) to a role of the STACKIT service account and binds it to the member. The assignment carries no condition and has no setting that removes the other holders of a role, so if the Google resource was authoritative (a binding for its role, a policy for the whole account) the replacing effect is not carried: a person lists who else holds a role on the account and removes what the source did not list. The resource is part of an experimental feature that is likely to change or be removed. The documents read do not state how a person, as opposed to a service account, acts as the account.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud SQL instance (Identity Architect) open input

1 unit: google_sql_database_instance.postgres · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 1 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the database users setting: The draft does not carry the setting on google_sql_database_instance.postgres; a manual step stands for it (MAN/semantic/google_sql_database_instance.postgres/database-users).
Still open
Review the database users setting: the target behaviour of this setting is not established. Review the database users setting: A check of the knowledge base (sql user not generated) needs a value the scan cannot read statically, so it could not decide. A built-in user of a PostgreSQL instance becomes a stackit_postgresflex_user with the same username (pinned provider) — TRANSFORMED. IAM users (and a name or type not visible statically) are not generated — REVIEW (check sql-user-not-generated); users of the other engines are named NOT CARRIED — REVIEW.
What closes it
Review the database users setting: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.
Next action
Review the database users setting: This setting follows the decision on the unit: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.
Technical details

Record DEC-IAM-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.sql_instance contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_sql_database_instance.postgres|database-users
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the database users setting (database-users): Open: no decision of the record has been taken. The knowledge base cannot decide "database-users" of the gcp.sql_instance 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: This setting follows the decision on the unit: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud SQL instance (Network Architect) open input

1 unit: google_sql_database_instance.postgres · owner role Network Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
2 options across its settings, each with its trade-off under Technical details
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 1 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the user and database settings setting: The draft does not carry the setting on google_sql_database_instance.postgres; a manual step stands for it (MAN/semantic/google_sql_database_instance.postgres/user-and-database-settings).
Still open
Review the user and database settings setting: the target behaviour of this setting is not established. Review the user and database settings 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 source password is not copied (STACKIT generates it: stackit_postgresflex_user.password is computed), a host restriction and ABANDON deletion policies have no counterpart (pinned provider) — the draft names them NOT CARRIED — REVIEW.
Ways out
  1. Review the user and database settings setting: Carry the setting on STACKIT PostgreSQL Flex; effect: You design how STACKIT PostgreSQL Flex carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
  2. Review the user and database settings setting: Accept the difference; effect: The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
What closes it
Review the user and database settings setting: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Review the user and database settings setting: Review the user and database settings setting for google_sql_database_instance.postgres: Decide how STACKIT PostgreSQL Flex carries this setting, or accept the difference. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-NET-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.sql_instance contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_sql_database_instance.postgres|user-and-database-settings
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the user and database settings setting (user-and-database-settings): Open: no decision of the record has been taken. The knowledge base cannot decide "user-and-database-settings" of the gcp.sql_instance 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 user and database settings setting for google_sql_database_instance.postgres: Decide how STACKIT PostgreSQL Flex carries this setting, or accept the difference. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • derived-carry-on-the-target-25abe723033e — Carry the setting on STACKIT PostgreSQL Flex. You design how STACKIT PostgreSQL Flex carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
    • derived-accept-the-difference-25abe723033e — Accept the difference. The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud SQL instance (Platform Architect) open input

1 unit: google_sql_database_instance.postgres · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_sql_database_instance.postgres is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 1 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the name of the resource on the target: The draft does not carry the setting on google_sql_database_instance.postgres; a manual step stands for it (MAN/semantic/google_sql_database_instance.postgres/open-settings-platform-architect). Confirm the name of the SQL database: The draft does not carry the setting on google_sql_database_instance.postgres; a manual step stands for it (MAN/semantic/google_sql_database_instance.postgres/open-settings-platform-architect).
Still open
Confirm the name of the resource on the target: the target behaviour of this setting is not established Confirm the name of the SQL database: the target behaviour of this setting is not established. Confirm the name of the resource 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. google_sql_database_instance.name: The instance's name/label; does not itself grant access, encrypt data, or control backups/availability/residency. Confirm the name of the SQL database: 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. google_sql_database.name (a facet of the unit): The literal database name; determines the connection target's label but does not itself grant or restrict access, encrypt data, or affect backups/availability/residency.
What closes it
Confirm the name of the resource on the target: A person confirms the instance name the STACKIT database carries against what refers to the source instance name, or accepts the new name. Confirm the name of the SQL database: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.
Next action
Confirm the name of the resource on the target: Confirm the name of the resource on the target for google_sql_database_instance.postgres: A person confirms the instance name the STACKIT database carries against what refers to the source instance name, or accepts the new name. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.sql_instance contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_sql_database_instance.postgres|tc-name
  • alias google_sql_database_instance.postgres|tcf-sql-database--name
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Confirm the name of the resource on the target (tc-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the Cloud SQL instance" of the gcp.sql_instance 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 name of the resource on the target for google_sql_database_instance.postgres: A person confirms the instance name the STACKIT database carries against what refers to the source instance name, or accepts the new name. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Confirm the name of the SQL database (tcf-sql-database--name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the SQL database" of the gcp.sql_instance 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 name of the SQL database for google_sql_database_instance.postgres: Create the database under the same name on the target, because the application connects to it by that name. PostgreSQL Flex and SQL Server Flex have a database resource; on MariaDB create the database with SQL once the instance exists. 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 Cloud Storage bucket (Storage Architect) open input

1 unit: google_storage_bucket.media · owner role Storage Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
2 options across its settings, each with its trade-off under Technical details
Applications touched
none: no applications file was given and no suggested group is known to hold an affected unit
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 2 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm whether the bucket may be deleted with its contents: The draft does not carry the setting on google_storage_bucket.media. The plan refuses REF/semantic/google_storage_bucket.media/force-destroy.
Still open
Confirm whether the bucket may be deleted with its contents: the target behaviour of this setting is not established. Confirm whether the bucket may be deleted with its contents: A check of the knowledge base (gcs force destroy) found a setting the target has no counterpart for (a finding of this unit describes it). stackit_objectstorage_bucket (pinned provider) "cannot be destroyed if the bucket contains objects" (schema description): force_destroy = false — a destroy that stops at a non-empty bucket — is what STACKIT does, PRESERVED; true has no counterpart, UNSUPPORTED (check gcs-force-destroy).
Ways out
  1. Confirm whether the bucket may be deleted with its contents: Accept the loss; effect: Nothing on the target carries this setting, and you record that as accepted. The draft does not change and no step is freed by it.
  2. Confirm whether the bucket may be deleted with its contents: Rebuild it by hand; effect: Find which applications use the Google client libraries or signed URLs — those need a code change. The draft does not change and no step is freed by it.
What closes it
Confirm whether the bucket may be deleted with its contents: A person accepts the difference or the design changes: nothing in the source can make the target carry it.
Next action
Confirm whether the bucket may be deleted with its contents: Confirm whether the bucket may be deleted with its contents for google_storage_bucket.media: force_destroy lets Terraform delete the bucket together with its objects. STACKIT has no such override: stackit_objectstorage_bucket (the pinned STACKIT provider) "cannot be destroyed if the bucket contains objects" — empty the bucket (or migrate its objects) before destroying it. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-DATA-GOOGLE-STORAGE-BUCKET-MEDIA (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.storage_bucket contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_storage_bucket.media|force-destroy
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm whether the bucket may be deleted with its contents (force-destroy): Open: no decision of the record has been taken. The knowledge base cannot decide "force-destroy" of the gcp.storage_bucket contract for 1 unit (not available on STACKIT): 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 whether the bucket may be deleted with its contents for google_storage_bucket.media: force_destroy lets Terraform delete the bucket together with its objects. STACKIT has no such override: stackit_objectstorage_bucket (the pinned STACKIT provider) "cannot be destroyed if the bucket contains objects" — empty the bucket (or migrate its objects) before destroying it. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • derived-accept-the-loss-5d7d37005886 — Accept the loss. Nothing on the target carries this setting, and you record that as accepted. The draft does not change and no step is freed by it.
    • derived-rebuild-by-hand-5d7d37005886 — Rebuild it by hand. Find which applications use the Google client libraries or signed URLs — those need a code change. The draft does not change and no step is freed by it.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Storage bucket open input

1 unit: google_storage_bucket.media · owner role Storage Architect — named by its manual steps; the record states no owner · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 2 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the IAM access setting: The draft does not carry the setting on google_storage_bucket.media; a manual step stands for it (MAN/semantic/google_storage_bucket.media/iam-access).
Still open
Review the IAM access setting: the target behaviour of this setting is not established. Review the IAM access setting: A check of the knowledge base (gcs iam) 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 who may access the bucket, granted with IAM bindings or ACL entries.
What closes it
Review the IAM access setting: A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person creates the bucket policies and Object Storage credentials that give the same access on STACKIT.
Next action
Review the IAM access setting: Review the IAM access setting for google_storage_bucket.media: A person creates the bucket policies and Object Storage credentials that give the same access on STACKIT. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-GEN-GOOGLE-STORAGE-BUCKET-MEDIA (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.storage_bucket contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_storage_bucket.media|iam-access
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Review the IAM access setting (iam-access): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-access" of the gcp.storage_bucket 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 access setting for google_storage_bucket.media: A person creates the bucket policies and Object Storage credentials that give the same access on STACKIT. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. 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 Cloud Storage bucket (Identity Architect) open input

1 unit: google_storage_bucket.media · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 2 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Review the IAM grant setting: The draft does not carry the setting on google_storage_bucket.media; a manual step stands for it (MAN/semantic/google_storage_bucket.media/open-settings-identity-architect). Review the public access setting: The draft does not carry the setting on google_storage_bucket.media; a manual step stands for it (MAN/semantic/google_storage_bucket.media/open-settings-identity-architect).
Still open
Review the IAM grant setting: the target behaviour of this setting is not established Review the public access setting: the target behaviour of this setting is not established. Review the IAM grant setting: A check of the knowledge base (gcs iam) 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 value-level reader of who gets which role (`iam-access` above is the facet as a whole): role, member(s) and condition. A GCP principal (user:, group:, serviceAccount:, allUsers) and a predefined role have no STACKIT counterpart in a bucket policy, whose statements name principals and S3 actions (supported-permissions-in-bucket-policies docs; the draft writes no policy) — a person translates each grant — REVIEW for every value, allUsers included (that one is also public-access, TRANSFORMED). Review the public access setting: A check of the knowledge base (gcs public) needs a value the scan cannot read statically, so it could not decide. The counterpart is a bucket policy with Principal "*" and s3:GetObject (documented sample), but stackit_objectstorage_bucket has no policy attribute and the provider no bucket-policy resource, so the draft writes none: REVIEW, as for the IP rules.
What closes it
Review the IAM grant setting: A person decides what this finding asks, and records the evidence or the decision. The finding says: Bucket access is granted with IAM bindings or ACL entries; on STACKIT it becomes bucket policies and Object Storage credentials. Review the public access setting: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.
Next action
Review the IAM grant setting: Review the IAM grant setting for google_storage_bucket.media: A person decides what this finding asks, and records the evidence or the decision. The finding says: Bucket access is granted with IAM bindings or ACL entries; on STACKIT it becomes bucket policies and Object Storage credentials. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-IAM-GOOGLE-STORAGE-BUCKET-MEDIA (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.storage_bucket contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
2
Show the 2 open critical semantics
  • alias google_storage_bucket.media|iam-grant
  • alias google_storage_bucket.media|public-access
Options
None listed.
Settings
2 critical settings of the unit, each with its own reason, state and options:
  1. Review the IAM grant setting (iam-grant): Open: no decision of the record has been taken. The knowledge base cannot decide "iam-grant" of the gcp.storage_bucket 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 grant setting for google_storage_bucket.media: A person decides what this finding asks, and records the evidence or the decision. The finding says: Bucket access is granted with IAM bindings or ACL entries; on STACKIT it becomes bucket policies and Object Storage credentials. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  2. Review the public access setting (public-access): Open: no decision of the record has been taken. The knowledge base cannot decide "public-access" of the gcp.storage_bucket 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: This setting follows the decision on the unit: A literal value or a resolved reference in the source lets the check decide, or a person verifies the value.
Recommended option
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Storage bucket (Platform Architect) open input

1 unit: google_storage_bucket.media · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 2 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the name of the Cloud Storage bucket: The draft does not carry the setting on google_storage_bucket.media; a manual step stands for it (MAN/semantic/google_storage_bucket.media/tc-storage-bucket-name).
Still open
Confirm the name of the Cloud Storage bucket: the target behaviour of this setting is not established. Confirm the name of the Cloud Storage bucket: 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 name of the Cloud Storage bucket, in lowercase and at most 63 characters per the provider documentation, by which applications address it.
What closes it
Confirm the name of the Cloud Storage bucket: A person confirms the Object Storage bucket name against the applications and tools that use the source bucket name, or accepts the new name.
Next action
Confirm the name of the Cloud Storage bucket: Confirm the name of the Cloud Storage bucket for google_storage_bucket.media: A person confirms the Object Storage bucket name against the applications and tools that use the source bucket name, or accepts the new name. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-GOOGLE-STORAGE-BUCKET-MEDIA (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.storage_bucket contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_storage_bucket.media|tc-storage-bucket-name
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm the name of the Cloud Storage bucket (tc-storage-bucket-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the Cloud Storage bucket" of the gcp.storage_bucket 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 name of the Cloud Storage bucket for google_storage_bucket.media: A person confirms the Object Storage bucket name against the applications and tools that use the source bucket name, or accepts the new name. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. 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 Cloud Storage bucket (Security Architect) open input

1 unit: google_storage_bucket.media · owner role Security Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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
  • google_storage_bucket.media is SHARED: it is a member of no suggested group (reached by several groups); the groups that reach it: migrate, server
Wave
wave 2 · steps in data services
Answer
not answered: no decisions file was given with this run
What the draft does
Decide the geo-replication: The draft does not carry the setting on google_storage_bucket.media; a manual step stands for it (MAN/semantic/google_storage_bucket.media/geo-replication).
Still open
Decide the geo-replication: the target behaviour of this setting is not established. Decide the geo-replication: The value is read from a variable's default; that is not a fact of the source. A custom_placement_config not visible statically (a dynamic block over an unknown for_each, a whole value from a variable) may be absent: the facts state no replication, the ledger writes no line and a person decides (REVIEW by the case; 2026-09-25 unknown-value audit — it used to be claimed as replicated).
What closes it
Decide the geo-replication: The value is set where the module is called (a literal), the variable is given its value in a variable file of the scan (--var-file), or a person confirms the value production uses.
Next action
Decide the geo-replication: Decide the geo-replication for google_storage_bucket.media: The value is set where the module is called (a literal), the variable is given its value in a variable file of the scan (--var-file), or a person confirms the value production uses. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-SEC-GOOGLE-STORAGE-BUCKET-MEDIA (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.storage_bucket contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_storage_bucket.media|geo-replication
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Decide the geo-replication (geo-replication): Open: no decision of the record has been taken. The knowledge base cannot decide "geo-replication" of the gcp.storage_bucket 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 geo-replication for google_storage_bucket.media: The value is set where the module is called (a literal), the variable is given its value in a variable file of the scan (--var-file), or a person confirms the value production uses. For this unit the mapping asks: Find which applications use the Google client libraries or signed URLs — those need a code change. 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 Cloud Build open input

1 unit: google_cloudbuild_trigger.placeholder · owner role not stated · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 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 workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Decide which firebase hosting site this resource depends on: The draft does not carry the setting on google_cloudbuild_trigger.placeholder; a manual step stands for it (MAN/unit/google_cloudbuild_trigger.placeholder).
Still open
Decide which firebase hosting site this resource depends on: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Decide which firebase hosting site this resource depends on: This unit names a resource of the type google_firebase_hosting_site (by an attribute that configures it) and the target does not carry that resource as a mapped unit (it is redesigned, blocked, left for review or has no draft block of its own), and no semantic of this unit's contract reads that type: what the reference becomes on the target is not assessed.
What closes it
Decide which firebase hosting site this resource depends on: The contract of this unit gains a semantic that reads google_firebase_hosting_site (and lists it as carried), or a person decides what the reference to the resource becomes.
Next action
Decide which firebase hosting site this resource depends on: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Technical details

Record DEC-GEN-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER (open critical semantic) · decisions.json

Decision
the critical settings of a unit, of the gcp.cloudbuild contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_cloudbuild_trigger.placeholder|linked-dependency:google_firebase_hosting_site
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Decide which firebase hosting site this resource depends on (linked-dependency:google_firebase_hosting_site): Open: no decision of the record has been taken. The knowledge base cannot decide "linked-dependency:google_firebase_hosting_site" of the gcp.cloudbuild 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. Here its unit exists only if a plan-time input holds (a root variable's default, the workspace; decided when OpenTofu plans): the decision applies only if it does, and the row of each such member in assurance/critical-semantics.json (critical_semantic_resolution.conditional_open, applies_only_if) says which input. Next: This setting follows the decision on the unit: Write the workflow in the repository: one job (or step) per build step, with the same container images or their STACKIT equivalents. Recreate every secret the build reads in STACKIT Secrets Manager (read with the vault action) or as a repository secret; the values of the source are never copied.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.

Serverless & Integration

2 records: 2 open input
Review the critical settings of a Cloud Run service (Platform Architect) open input

1 unit: google_cloud_run_v2_job.migrate · owner role Platform Architect · required by phase: not stated · 2 steps of the plan rest on it directly, and the steps after them wait with them

Options and trade-off
4 options across its settings, each with its trade-off under Technical details
Applications touched
migrate (PROPOSED)
Wave
wave 4 · steps in platform services, workloads
Answer
not answered: no decisions file was given with this run
What the draft does
Choose the container image or artifact: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect). The draft does not carry the image reference; the setting is left to a person. Confirm the entry point of the function: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect). Review the k4 cloud run volume mount cloud run v2 job setting: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect). Confirm the name of the cloud run v2 job: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect). Confirm the name of the env entry of the containers of the template of the template of the cloud run v2 job: The draft carries it on google_cloud_run_v2_job.migrate: step MAN/draft/kubernetes/migrate/manifests-yaml (the 1 environment keys of the source (DJANGO_ENV) are the env entries of `terraform/kubernetes/migrate/manifests.yaml`: the keys are carried, and the values stay the person's). Confirm the name of the volumes entry of the template of the template of the cloud run v2 job: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect). Review the terraform destroy guard setting: The draft does not carry the setting on google_cloud_run_v2_job.migrate; a manual step stands for it (MAN/semantic/google_cloud_run_v2_job.migrate/open-settings-platform-architect).
Still open
Choose the container image or artifact: That the same build runs on the target platform. Confirm the entry point of the function: the target behaviour of this setting is not established Review the k4 cloud run volume mount cloud run v2 job setting: the target behaviour of this setting is not established Confirm the name of the cloud run v2 job: the target behaviour of this setting is not established Confirm the name of the env entry of the containers of the template of the template of the cloud run v2 job: a person confirms that the carried value is what the source relies on Confirm the name of the volumes entry of the template of the template of the cloud run v2 job: the target behaviour of this setting is not established Review the terraform destroy guard setting: the target behaviour of this setting is not established. Choose the container image or artifact: 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. google_cloud_run_service.template.spec.containers.image; google_cloud_run_v2_service.template.containers.image, build_config.base_image, build_config.image_uri and 5 more; google_cloud_run_v2_job.template.template.containers.image; google_cloud_run_v2_worker_pool.template.containers.image, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Confirm the entry point of the function: 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. google_cloud_run_service.template.spec.containers.command, template.spec.containers.args, template.spec.containers.working_dir; google_cloud_run_v2_service.template.containers.command, template.containers.args, template.containers.working_dir and 4 more. Review the k4 cloud run volume mount cloud run v2 job 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. Where a volume appears in the container, which part of it is mounted there and the gcsfuse flags of a bucket mount (volume_mounts, mount_path and sub_path; volumes, gcs, mount_options). The application opens the bucket or share as a local directory, and the STACKIT draft mounts no volume into a container. Confirm the name of the cloud run v2 job: 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. google_cloud_run_v2_job.name: The job's own name, used for identification. Confirm the name of the env entry of the containers of the template of the template of the cloud run v2 job: 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. google_cloud_run_v2_job.template.template.containers.env.name: The name of an environment variable; an identifier, not the value it carries. Confirm the name of the volumes entry of the template of the template of the cloud run v2 job: 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. google_cloud_run_v2_job.template.template.volumes.name: The volume's own name, used only to cross-reference it from volume_mounts.name; an internal wiring identifier with no security meaning of its own. Review the terraform destroy guard 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. deletion_protection of a Cloud Run service, job or worker pool (on unless the source switches it off, which an explicit false states) only stops Terraform from destroying the resource; it is not an API protection.
Ways out
  1. Choose the container image or artifact: Run the container as a workload on SKE; needs the container image and its settings, a SKE cluster; effect: A service or a function that already runs as a container image moves as a Deployment on a SKE cluster, which is a managed Kubernetes service. Scale to zero and the billing per request go away unless an autoscaler that scales to zero is operated on the cluster.; regeneration: not stated — treated as required; risk: Capacity runs, and is billed, whether or not requests arrive.; the draft is generated again with it
  2. Choose the container image or artifact: Push the application to STACKIT Cloud Foundry; needs the application in a form Cloud Foundry runs, a Cloud Foundry organization; effect: STACKIT Cloud Foundry is a managed platform for applications that a developer deploys and scales; the application is pushed from its image or its code. Scale to zero and the billing per request go away.; regeneration: not stated — treated as required; risk: The platform differs from the source platform in how it scales and how it is billed.; the draft is generated again with it
  3. Confirm the entry point of the function: Carry the setting on Kubernetes Job/CronJob on SKE; effect: You design how Kubernetes Job/CronJob on SKE carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
  4. Confirm the entry point of the function: Accept the difference; effect: The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
What closes it
Choose the container image or artifact: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Confirm the entry point of the function: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the k4 cloud run volume mount cloud run v2 job setting: A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files. Confirm the name of the cloud run v2 job: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the name of the env entry of the containers of the template of the template of the cloud run v2 job: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Confirm the name of the volumes entry of the template of the template of the cloud run v2 job: A person confirms the value against the target, or the knowledge base gains a rule that decides this setting. Review the terraform destroy guard setting: A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code. Verification: Choose the container image or artifact: the image is pulled or built for the target platform and runs there.
Next action
Choose the container image or artifact: Choose the container image or artifact for google_cloud_run_v2_job.migrate: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE (open critical semantic) · action: a choice between evidenced paths · carried for google_cloud_run_v2_job.migrate · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
The plan’s reasons
  • where the image is built or pulled from
Applications of your file
None named.
Open critical semantics (unit|semantic)
7
Show the 7 open critical semantics
  • alias google_cloud_run_v2_job.migrate|deployment-artifact
  • alias google_cloud_run_v2_job.migrate|entry-point
  • alias google_cloud_run_v2_job.migrate|k4-cloud-run-volume-mount-cloud-run-v2-job
  • alias google_cloud_run_v2_job.migrate|tc-cloud-run-v2-job-name
  • alias google_cloud_run_v2_job.migrate|tc-cloud-run-v2-job-template--template--containers--env--name
  • alias google_cloud_run_v2_job.migrate|tc-cloud-run-v2-job-template--template--volumes--name
  • alias google_cloud_run_v2_job.migrate|terraform-destroy-guard
Options
None listed.
Settings
7 critical settings of the unit, each with its own reason, state and options:
  1. Choose the container image or artifact (deployment-artifact): Open: no decision of the record has been taken. The knowledge base cannot decide "deployment-artifact" of the gcp.cloud_run 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: Choose the container image or artifact for google_cloud_run_v2_job.migrate: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • workload-on-ske — Run the container as a workload on SKE. A service or a function that already runs as a container image moves as a Deployment on a SKE cluster, which is a managed Kubernetes service. Scale to zero and the billing per request go away unless an autoscaler that scales to zero is operated on the cluster.
    • app-on-cloud-foundry — Push the application to STACKIT Cloud Foundry. STACKIT Cloud Foundry is a managed platform for applications that a developer deploys and scales; the application is pushed from its image or its code. Scale to zero and the billing per request go away.
  2. Confirm the entry point of the function (entry-point): Open: no decision of the record has been taken. The knowledge base cannot decide "entry-point" of the gcp.cloud_run 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 entry point of the function for google_cloud_run_v2_job.migrate: Decide how Kubernetes Job/CronJob on SKE carries this setting, or accept the difference. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • derived-carry-on-the-target-ae560c1053b1 — Carry the setting on Kubernetes Job/CronJob on SKE. You design how Kubernetes Job/CronJob on SKE carries this setting and build it outside the draft. The draft does not change and no step is freed by it.
    • derived-accept-the-difference-ae560c1053b1 — Accept the difference. The target does not carry this setting as the source states it, and you record that as accepted. The draft does not change and no step is freed by it.
  3. Review the k4 cloud run volume mount cloud run v2 job setting (k4-cloud-run-volume-mount-cloud-run-v2-job): Open: no decision of the record has been taken. The knowledge base cannot decide "k4-cloud-run-volume-mount-cloud-run-v2-job" of the gcp.cloud_run 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 k4 cloud run volume mount cloud run v2 job setting for google_cloud_run_v2_job.migrate: A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the name of the cloud run v2 job (tc-cloud-run-v2-job-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the cloud run v2 job" of the gcp.cloud_run 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 name of the cloud run v2 job for google_cloud_run_v2_job.migrate: The name of the service, job or worker pool becomes the name of the Deployment or Job, which must be a valid lower-case Kubernetes name. Everything that starts or calls the workload by its old name changes with it: a scheduler, a workflow or a pipeline that runs the job by name, a caller that uses the service address, a dashboard or an alert that filters by name. List those callers and update each one. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Confirm the name of the env entry of the containers of the template of the template of the cloud run v2 job (tc-cloud-run-v2-job-template--template--containers--env--name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the env entry of the containers of the template of the template of the cloud run v2 job" of the gcp.cloud_run contract for 1 unit (left for a person to decide): the draft already carries it, so a person only confirms it. A review of this record is the architect's answer beside the engine's reading; it closes nothing. The row of each member in assurance/critical-semantics.json (carried_by) names the step and the file that carry it. Next: Confirm in the draft that the draft carries the name of the env entry of the containers of the template of the template of the cloud run v2 job for google_cloud_run_v2_job.migrate as the source relies on it; nothing needs deciding.
  6. Confirm the name of the volumes entry of the template of the template of the cloud run v2 job (tc-cloud-run-v2-job-template--template--volumes--name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the volumes entry of the template of the template of the cloud run v2 job" of the gcp.cloud_run 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 name of the volumes entry of the template of the template of the cloud run v2 job for google_cloud_run_v2_job.migrate: This name only wires the manifest together: the name of a container, of a volume that a mount refers to, of a variable the application reads, or of a revision. Check the manifest holds each environment variable under exactly the name the application reads, and that every mount refers to a volume that exists in the manifest. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  7. Review the terraform destroy guard setting (terraform-destroy-guard): Open: no decision of the record has been taken. The knowledge base cannot decide "terraform-destroy-guard" of the gcp.cloud_run 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 terraform destroy guard setting for google_cloud_run_v2_job.migrate: A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Review the critical settings of a Cloud Run service (Platform Architect) open input

1 unit: google_cloud_run_v2_service.server · owner role Platform Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

Options and trade-off
2 options across its settings, each with its trade-off under Technical details
Applications touched
server (PROPOSED)
Wave
wave 4 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Choose the container image or artifact: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect). The draft does not carry the image reference; the setting is left to a person. Decide how the volume mounts are carried: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect). Confirm the name of the Cloud Run service: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect). Confirm the name of the volumes entry of the template of the Cloud Run service: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect). Review the terraform destroy guard setting: The draft does not carry the setting on google_cloud_run_v2_service.server; a manual step stands for it (MAN/semantic/google_cloud_run_v2_service.server/open-settings-platform-architect).
Still open
Choose the container image or artifact: That the same build runs on the target platform. Decide how the volume mounts are carried: the target behaviour of this setting is not established Confirm the name of the Cloud Run service: the target behaviour of this setting is not established Confirm the name of the volumes entry of the template of the Cloud Run service: the target behaviour of this setting is not established Review the terraform destroy guard setting: the target behaviour of this setting is not established. Choose the container image or artifact: 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. google_cloud_run_service.template.spec.containers.image; google_cloud_run_v2_service.template.containers.image, build_config.base_image, build_config.image_uri and 5 more; google_cloud_run_v2_job.template.template.containers.image; google_cloud_run_v2_worker_pool.template.containers.image, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL). Decide how the volume mounts are carried: 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. Where a volume appears in the container, which part of it is mounted there and the gcsfuse flags of a bucket mount (volume_mounts, mount_path and sub_path; volumes, gcs, mount_options). The application opens the bucket or share as a local directory, and the STACKIT draft mounts no volume into a container. Confirm the name of the Cloud Run service: 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. google_cloud_run_v2_service.name: The Service's own name; an identifier used for addressing/reference, not an access-control or safety property in itself. Confirm the name of the volumes entry of the template of the Cloud Run service: 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. google_cloud_run_v2_service.template.volumes.name: The volume's own name, used only to cross-reference it from a volume_mounts.name entry; internal wiring identifier. Review the terraform destroy guard 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. deletion_protection of a Cloud Run service, job or worker pool (on unless the source switches it off, which an explicit false states) only stops Terraform from destroying the resource; it is not an API protection.
Ways out
  1. Choose the container image or artifact: Run the container as a workload on SKE; needs the container image and its settings, a SKE cluster; effect: A service or a function that already runs as a container image moves as a Deployment on a SKE cluster, which is a managed Kubernetes service. Scale to zero and the billing per request go away unless an autoscaler that scales to zero is operated on the cluster.; regeneration: not stated — treated as required; risk: Capacity runs, and is billed, whether or not requests arrive.; the draft is generated again with it
  2. Choose the container image or artifact: Push the application to STACKIT Cloud Foundry; needs the application in a form Cloud Foundry runs, a Cloud Foundry organization; effect: STACKIT Cloud Foundry is a managed platform for applications that a developer deploys and scales; the application is pushed from its image or its code. Scale to zero and the billing per request go away.; regeneration: not stated — treated as required; risk: The platform differs from the source platform in how it scales and how it is billed.; the draft is generated again with it
What closes it
Choose the container image or artifact: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Decide how the volume mounts are carried: A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files. Confirm the name of the Cloud Run service: A person confirms the workload name on the cluster against what addresses or refers to the Cloud Run service name, or accepts the new name. Confirm the name of the volumes entry of the template of the Cloud Run service: A person keeps each volume name matched with the volume mount that refers to it when the volumes are rebuilt as workload volumes on the cluster. Review the terraform destroy guard setting: A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code. Verification: Choose the container image or artifact: the image is pulled or built for the target platform and runs there.
Next action
Choose the container image or artifact: Choose the container image or artifact for google_cloud_run_v2_service.server: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Technical details

Record DEC-OPS-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER (open critical semantic) · action: a choice between evidenced paths · decisions.json

Decision
the critical settings of a unit, of the gcp.cloud_run contract
The plan’s reasons
  • where the image is built or pulled from
Applications of your file
None named.
Open critical semantics (unit|semantic)
5
Show the 5 open critical semantics
  • alias google_cloud_run_v2_service.server|deployment-artifact
  • alias google_cloud_run_v2_service.server|k4-cloud-run-volume-mount-cloud-run-v2-service
  • alias google_cloud_run_v2_service.server|tc-cloud-run-v2-service-name
  • alias google_cloud_run_v2_service.server|tc-cloud-run-v2-service-template--volumes--name
  • alias google_cloud_run_v2_service.server|terraform-destroy-guard
Options
None listed.
Settings
5 critical settings of the unit, each with its own reason, state and options:
  1. Choose the container image or artifact (deployment-artifact): Open: no decision of the record has been taken. The knowledge base cannot decide "deployment-artifact" of the gcp.cloud_run 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: Choose the container image or artifact for google_cloud_run_v2_service.server: A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
    • workload-on-ske — Run the container as a workload on SKE. A service or a function that already runs as a container image moves as a Deployment on a SKE cluster, which is a managed Kubernetes service. Scale to zero and the billing per request go away unless an autoscaler that scales to zero is operated on the cluster.
    • app-on-cloud-foundry — Push the application to STACKIT Cloud Foundry. STACKIT Cloud Foundry is a managed platform for applications that a developer deploys and scales; the application is pushed from its image or its code. Scale to zero and the billing per request go away.
  2. Decide how the volume mounts are carried (k4-cloud-run-volume-mount-cloud-run-v2-service): Open: no decision of the record has been taken. The knowledge base cannot decide "k4-cloud-run-volume-mount-cloud-run-v2-service" of the gcp.cloud_run 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 how the volume mounts are carried for google_cloud_run_v2_service.server: A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  3. Confirm the name of the Cloud Run service (tc-cloud-run-v2-service-name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the Cloud Run service" of the gcp.cloud_run 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 name of the Cloud Run service for google_cloud_run_v2_service.server: A person confirms the workload name on the cluster against what addresses or refers to the Cloud Run service name, or accepts the new name. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  4. Confirm the name of the volumes entry of the template of the Cloud Run service (tc-cloud-run-v2-service-template--volumes--name): Open: no decision of the record has been taken. The knowledge base cannot decide "the name of the volumes entry of the template of the Cloud Run service" of the gcp.cloud_run 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 name of the volumes entry of the template of the Cloud Run service for google_cloud_run_v2_service.server: A person keeps each volume name matched with the volume mount that refers to it when the volumes are rebuilt as workload volumes on the cluster. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
  5. Review the terraform destroy guard setting (terraform-destroy-guard): Open: no decision of the record has been taken. The knowledge base cannot decide "terraform-destroy-guard" of the gcp.cloud_run 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 terraform destroy guard setting for google_cloud_run_v2_service.server: A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code. Record the answer for this record in the decisions file given with --decisions (decisions-template.yaml).
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.

Guidance only: there is no choice to make in these records; a check or a person does what they say.

Other decisions (no work package stated)

3 records: 1 blocked · 2 manual work
Review the critical settings of a firebase project (Identity Architect) blocked

1 unit: google_firebase_project.default · owner role Identity Architect · required by phase: not stated · 1 step of the plan rests on it directly, and the steps after them wait with them

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 holds an affected unit
Wave
wave 1 · steps in platform services
Answer
not answered: no decisions file was given with this run
What the draft does
Confirm the project of the firebase project: The draft does not carry the setting on google_firebase_project.default. The plan refuses REF/unit/google_firebase_project.default.
Still open
Confirm the project of the firebase project: the draft writes nothing for the unit: what the setting becomes depends on what replaces it. Confirm the project of the firebase project: 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. google_firebase_project.project (identity access): The Google Cloud project the resource is created in. IAM policy, organisation policy and audit configuration are inherited from the project, so it decides who can act on the resource and what it is isolated from. Firebase has no STACKIT counterpart, so the registration of the app is not moved and the backend the app talks to is chosen by a person.
What closes it
Confirm the project of the firebase project: A person decides which STACKIT project, and with it which access rules, holds the replacement.
Next action
Confirm the project of the firebase project: The plan refuses REF/unit/google_firebase_project.default for google_firebase_project.default: Nothing on STACKIT holds the registration of an app or the enabling of Firebase on a project. It stays with Google for as long as any Firebase service (push messaging, for example) is used, and a person decides, app by app, which backend replaces the Firebase services the app calls. Adding Firebase to a project cannot be undone (a redesign could go: List the Firebase services each app uses (authentication, database, storage, messaging, remote config); each needs its own replacement; The signing keys and store listings stay with Google Play and the Apple App Store; only the backend the app talks to moves). Decide the redesign before anything rests on this record.
Technical details

Record DEC-IAM-GOOGLE-FIREBASE-PROJECT-DEFAULT (open critical semantic) · action: no supported STACKIT path · decisions.json

Decision
the critical settings of a unit, of the gcp.firebase_project contract
Applications of your file
None named.
Open critical semantics (unit|semantic)
1 alias google_firebase_project.default|tc-firebase-project-project
Options
None listed.
Settings
1 critical setting of the unit, each with its own reason, state and options:
  1. Confirm the project of the firebase project (tc-firebase-project-project): Open: no decision of the record has been taken. The knowledge base cannot decide "the project of the firebase project" of the gcp.firebase_project 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 plan refuses REF/unit/google_firebase_project.default for google_firebase_project.default: Nothing on STACKIT holds the registration of an app or the enabling of Firebase on a project. It stays with Google for as long as any Firebase service (push messaging, for example) is used, and a person decides, app by app, which backend replaces the Firebase services the app calls. Adding Firebase to a project cannot be undone (a redesign could go: List the Firebase services each app uses (authentication, database, storage, messaging, remote config); each needs its own replacement; The signing keys and store listings stay with Google Play and the Apple App Store; only the backend the app talks to moves). Decide the redesign before anything rests on this record.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Service account: manual review manual work

2 units: google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server · owner role Identity Architect · required by phase: before the pilot · 2 steps of the plan rest on it directly, and the steps after them wait with them

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
migrate (PROPOSED), server (PROPOSED)
Wave
wave 4 · steps in prepare
Answer
not answered: no decisions file was given with this run
What the draft does
The draft writes no resource for google_cloud_run_v2_job.migrate and google_cloud_run_v2_service.server.
Still open
The work outside the draft is neither done nor verified by StackToIT. The stackitsa plan of the draft writes no resource for 2 units and states why (the plan states the cause for each unit: google_cloud_run_v2_job.migrate: google_cloud_run_v2_job.migrate is a container task: its 1 identity binding(s) are facts only, and no service account is attached for it (no service account is attached to a workload of this source: an account attaches, but it can do nothing without its roles, and writing a role assignment from a draft has not been shown on STACKIT (it needs a right the key that tried it did not hold), so the draft grants no role and attaches no account); google_cloud_run_v2_service.server: google_cloud_run_v2_service.server is a container service: its 1 identity binding(s) are facts only, and no service account is attached for it (no service account is attached to a workload of this source: an account attaches, but it can do nothing without its roles, and writing a role assignment from a draft has not been shown on STACKIT (it needs a right the key that tried it did not hold), so the draft grants no role and attaches no account)): a person decides or does what the statement names outside the draft, and StackToIT neither does nor verifies it. A review of this record documents the architect's answer; it changes nothing in the plan.
What closes it
The identity fact of google_cloud_run_v2_job.migrate (template[0].template[0].service_account of google_cloud_run_v2_job.migrate names google_service_account.automation) is decided on STACKIT and recorded, or recorded as not needed. The identity fact of google_cloud_run_v2_service.server (template[0].service_account of google_cloud_run_v2_service.server names google_service_account.server) is decided on STACKIT and recorded, or recorded as not needed.
Next action
Outside the draft, for google_cloud_run_v2_job.migrate and google_cloud_run_v2_service.server: Decide how google_cloud_run_v2_job.migrate gets its application identity on STACKIT (a service account of its own, workload federation): the draft does not write it (and 1 more manual steps); the plan lists it as manual work.
Technical details

Record DEC-IAM-STACKITSA-STATEMENT-MANUAL-REVIEW (plan statement) · action: work by hand outside the draft · decisions.json

Decision
manual review, of the stackitsa part of the draft
Applications of your file
None named.
Plan statements
2
Show the 2 plan statements
  • alias stackitsa:statement:google_cloud_run_v2_job.migrate
  • alias stackitsa:statement:google_cloud_run_v2_service.server
Options
None listed.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.
Service account: not drafted manual work

2 units: google_service_account.automation, google_service_account.server · owner role Identity Architect · required by phase: before the pilot · 2 steps of the plan rest on it directly, and the steps after them wait with them

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
migrate (PROPOSED), server (PROPOSED)
Wave
wave 1 · steps in prepare
Answer
not answered: no decisions file was given with this run
What the draft does
The draft writes no resource for google_service_account.automation and google_service_account.server.
Still open
The work outside the draft is neither done nor verified by StackToIT. The stackitsa plan of the draft writes no resource for 2 units and states why (no resource is written for the unit and the plan names a step beside it): a person decides or does what the statement names outside the draft, and StackToIT neither does nor verifies it. A review of this record documents the architect's answer; it changes nothing in the plan.
What closes it
The people and the workloads that may use the service account written for google_service_account.automation are named, and the roles it holds are stated. The people and the workloads that may use the service account written for google_service_account.server are named, and the roles it holds are stated.
Next action
Outside the draft, for google_service_account.automation and google_service_account.server: Decide who may use the STACKIT service account written for google_service_account.automation, what it may do and which workloads run as it: the draft attaches it to nothing (and 1 more manual steps); the plan lists it as manual work.
Technical details

Record DEC-IAM-STACKITSA-STATEMENT-NOT-DRAFTED (plan statement) · action: work by hand outside the draft · decisions.json

Decision
not drafted, of the stackitsa part of the draft
Applications of your file
None named.
Plan statements
2
Show the 2 plan statements
  • alias stackitsa:statement:google_service_account.automation
  • alias stackitsa:statement:google_service_account.server
Options
None listed.
Recommended option
None.
Evidence
None.
Status
Open: not decided yet.

Views

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

Open (43)
Blocking (5)
Before pilot (7)
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 (43 records)

One row for each record of the register: 5 plan decision records, 36 critical setting 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 (43)
StateCustomer inputTarget limitImplementation gapDepends on the unitNot classifiedMixed causesAll causes
Open32412101243
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 (3)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-API-OPT-IN plan decision: api opt in (convert); 2 plan decisions Open Customer input The customer's answer, as an input or as an architect decision (decisions file entry for this record) 3: google_pubsub_topic.faux, google_secret_manager_secret.django_admin_password, google_secret_manager_secret.django_settings google_pubsub_topic.faux, google_secret_manager_secret.django_admin_password, google_secret_manager_secret.django_settings
DEC-GEN-CONVERT-DATA-MOVEMENT plan decision: data movement (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: google_sql_database_instance.postgres google_sql_database_instance.postgres
DEC-SEC-GOOGLE-STORAGE-BUCKET-MEDIA open critical semantic: the critical settings of a unit (gcp.storage_bucket); 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: google_storage_bucket.media google_storage_bucket.media

Open · Target limit (2)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-PROPOSED-ALTERNATIVE plan decision: proposed alternative (convert); 8 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 7: google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder and 4 more (listed on the record’s card) google_secret_manager_secret.django_admin_password, google_secret_manager_secret.django_settings, google_storage_bucket.media
DEC-DATA-GOOGLE-STORAGE-BUCKET-MEDIA open critical semantic: the critical settings of a unit (gcp.storage_bucket); 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: google_storage_bucket.media google_storage_bucket.media

Open · Implementation gap (4)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER open critical semantic: the critical settings of a unit (gcp.cloudbuild); 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: google_cloudbuild_trigger.placeholder No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES open critical semantic: the critical settings of a unit (gcp.sql_instance); 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: google_sql_database_instance.postgres google_sql_database_instance.postgres
DEC-OPS-GOOGLE-STORAGE-BUCKET-MEDIA open critical semantic: the critical settings of a unit (gcp.storage_bucket); 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: google_storage_bucket.media google_storage_bucket.media
DEC-IAM-STACKITSA-STATEMENT-NOT-DRAFTED plan statement: not drafted (stackitsa); 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: google_service_account.automation, google_service_account.server No evidence drawer: none of the units has a trace in this build.

Open · Depends on the unit (12)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-IAM-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE open critical semantic: the critical settings of a unit (gcp.cloud_run); 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: google_cloud_run_v2_job.migrate No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-ACTIVATEGCB open critical semantic: the critical settings of a unit (gcp.cloudbuild); 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: google_cloudbuild_trigger.activategcb No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-ACTIVATEGCB open critical semantic: the critical settings of a unit (gcp.cloudbuild); 4 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: google_cloudbuild_trigger.activategcb No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-INIT open critical semantic: the critical settings of a unit (gcp.cloudbuild); 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: google_cloudbuild_trigger.init No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-INIT open critical semantic: the critical settings of a unit (gcp.cloudbuild); 4 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: google_cloudbuild_trigger.init No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER open critical semantic: the critical settings of a unit (gcp.cloudbuild); 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: google_cloudbuild_trigger.placeholder No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-CLOUDBUILD-TRIGGER-PLACEHOLDER open critical semantic: the critical settings of a unit (gcp.cloudbuild); 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: google_cloudbuild_trigger.placeholder No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT open critical semantic: the critical settings of a unit (gcp.firebase_hosting_site); 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: google_firebase_hosting_site.client No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-FIREBASE-HOSTING-SITE-CLIENT open critical semantic: the critical settings of a unit (gcp.firebase_hosting_site); 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: google_firebase_hosting_site.client No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-FIREBASE-PROJECT-DEFAULT open critical semantic: the critical settings of a unit (gcp.firebase_project); 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: google_firebase_project.default No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES open critical semantic: the critical settings of a unit (gcp.sql_instance); 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: google_sql_database_instance.postgres google_sql_database_instance.postgres
DEC-IAM-STACKITSA-STATEMENT-MANUAL-REVIEW plan statement: manual review (stackitsa); 2 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 2: google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.

Open · Not classified (10)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-NET-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE open critical semantic: the critical settings of a unit (gcp.cloud_run); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_cloud_run_v2_job.migrate No evidence drawer: none of the units has a trace in this build.
DEC-SEC-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE open critical semantic: the critical settings of a unit (gcp.cloud_run); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_cloud_run_v2_job.migrate No evidence drawer: none of the units has a trace in this build.
DEC-GEN-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER open critical semantic: the critical settings of a unit (gcp.cloud_run); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.
DEC-NET-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER open critical semantic: the critical settings of a unit (gcp.cloud_run); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.
DEC-SEC-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER open critical semantic: the critical settings of a unit (gcp.cloud_run); 2 open critical semantics Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-PUBSUB-TOPIC-FAUX open critical semantic: the critical settings of a unit (gcp.pubsub_topic); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_pubsub_topic.faux google_pubsub_topic.faux
DEC-IAM-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-ADMIN-PASSWORD open critical semantic: the critical settings of a unit (gcp.secret); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_secret_manager_secret.django_admin_password google_secret_manager_secret.django_admin_password
DEC-IAM-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-SETTINGS open critical semantic: the critical settings of a unit (gcp.secret); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_secret_manager_secret.django_settings google_secret_manager_secret.django_settings
DEC-NET-GOOGLE-SQL-DATABASE-INSTANCE-POSTGRES open critical semantic: the critical settings of a unit (gcp.sql_instance); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_sql_database_instance.postgres google_sql_database_instance.postgres
DEC-GEN-GOOGLE-STORAGE-BUCKET-MEDIA open critical semantic: the critical settings of a unit (gcp.storage_bucket); 1 open critical semantic Open Not classified Not stated; an architect decision (decisions file entry for this record) documents the review 1: google_storage_bucket.media google_storage_bucket.media

Open · Mixed causes (12)

RecordWhat it isStateCauseWhat answers itUnitsEvidence
DEC-GEN-CONVERT-SOURCE-PROJECT-MAPPING plan decision: source project mapping (convert); 5 plan decisions Open Mixed causes: Customer input 1, Depends on the unit 3, Not classified 1 Differs by member: see the causes of the row 4: google_cloudbuild_trigger.activategcb, google_cloudbuild_trigger.init, google_cloudbuild_trigger.placeholder and 1 more (listed on the record’s card) google_sql_database_instance.postgres
DEC-GEN-CONVERT-SOURCE-REGION-MAPPING plan decision: source region mapping (convert); 5 plan decisions Open Mixed causes: Customer input 3, Not classified 2 Differs by member: see the causes of the row 4: google_cloud_run_v2_job.migrate, google_cloud_run_v2_service.server, google_sql_database_instance.postgres and 1 more (listed on the record’s card) google_sql_database_instance.postgres, google_storage_bucket.media
DEC-OPS-GOOGLE-CLOUD-RUN-V2-JOB-MIGRATE open critical semantic: the critical settings of a unit (gcp.cloud_run); 7 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 3, Not classified 3 Differs by member: see the causes of the row 1: google_cloud_run_v2_job.migrate No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER open critical semantic: the critical settings of a unit (gcp.cloud_run); 2 open critical semantics Open Mixed causes: Depends on the unit 1, Not classified 1 Differs by member: see the causes of the row 1: google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.
DEC-OPS-GOOGLE-CLOUD-RUN-V2-SERVICE-SERVER open critical semantic: the critical settings of a unit (gcp.cloud_run); 5 open critical semantics Open Mixed causes: Customer input 1, Implementation gap 2, Not classified 2 Differs by member: see the causes of the row 1: google_cloud_run_v2_service.server No evidence drawer: none of the units has a trace in this build.
DEC-SEC-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-ADMIN-PASSWORD open critical semantic: the critical settings of a unit (gcp.secret); 2 open critical semantics Open Mixed causes: Implementation gap 1, Not classified 1 Differs by member: see the causes of the row 1: google_secret_manager_secret.django_admin_password google_secret_manager_secret.django_admin_password
DEC-SEC-GOOGLE-SECRET-MANAGER-SECRET-DJANGO-SETTINGS open critical semantic: the critical settings of a unit (gcp.secret); 2 open critical semantics Open Mixed causes: Implementation gap 1, Not classified 1 Differs by member: see the causes of the row 1: google_secret_manager_secret.django_settings google_secret_manager_secret.django_settings
DEC-IAM-GOOGLE-SERVICE-ACCOUNT-AUTOMATION open critical semantic: the critical settings of a unit (gcp.service_account); 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: google_service_account.automation No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-SERVICE-ACCOUNT-CLIENT open critical semantic: the critical settings of a unit (gcp.service_account); 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: google_service_account.client google_service_account.client
DEC-IAM-GOOGLE-SERVICE-ACCOUNT-INIT open critical semantic: the critical settings of a unit (gcp.service_account); 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: google_service_account.init google_service_account.init
DEC-IAM-GOOGLE-SERVICE-ACCOUNT-SERVER open critical semantic: the critical settings of a unit (gcp.service_account); 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: google_service_account.server No evidence drawer: none of the units has a trace in this build.
DEC-IAM-GOOGLE-STORAGE-BUCKET-MEDIA open critical semantic: the critical settings of a unit (gcp.storage_bucket); 2 open critical semantics Open Mixed causes: Depends on the unit 1, Not classified 1 Differs by member: see the causes of the row 1: google_storage_bucket.media google_storage_bucket.media

Critical settings left open, unit by unit

50 of the 62 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 50 open critical semantics
UnitSemanticDispositionWhy it is openWhat closes itGiven by
google_cloud_run_v2_job.migratecloud-run-v2-job-network-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. template.template.vpc_access.egress, template.template.vpc_access.network_interfaces.network, template.template.vpc_access.network_interfaces.subnetwork, template.template.volumes.cloud_sql_instance.instances (network exposure) — what the resource is reachable from and what it can reach. The draft names these settings NOT CARRIED: which database the job mounts and which network its egress goes through are re-created on the target (a database connection, the network of the workload) by a person. A person decides: REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratedeployment-artifactREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. google_cloud_run_service.template.spec.containers.image; google_cloud_run_v2_service.template.containers.image, build_config.base_image, build_config.image_uri and 5 more; google_cloud_run_v2_job.template.template.containers.image; google_cloud_run_v2_worker_pool.template.containers.image, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL).A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migrateentry-pointREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. google_cloud_run_service.template.spec.containers.command, template.spec.containers.args, template.spec.containers.working_dir; google_cloud_run_v2_service.template.containers.command, template.containers.args, template.containers.working_dir and 4 more.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratek4-cloud-run-volume-mount-cloud-run-v2-jobREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Where a volume appears in the container, which part of it is mounted there and the gcsfuse flags of a bucket mount (volume_mounts, mount_path and sub_path; volumes, gcs, mount_options). The application opens the bucket or share as a local directory, and the STACKIT draft mounts no volume into a container.A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratelocation-residencyREVIEWThe 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 region the service, job or worker pool runs in (google 8.4.0 `location`). A person confirms the region — REVIEW (critical, the value is not verified against the target).A person confirms the STACKIT region of the SKE cluster the workload runs on holds the residency the source region gave, since no mapping between Google and STACKIT regions is evidenced.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratesecretsREVIEWThe 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 Secret Manager reference in the environment becomes a secretKeyRef of the Deployment or Job and a secret volume a Kubernetes secret volume, and the head of the manifest lists the Secrets to create. The draft writes no Secret, because no value of a secret reaches an output.A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator).the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migrateservice-identityLEDGERWhether the draft carries this setting is decided by its semantic ledger entry "workload identity", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). The Google service account the workload runs as. target.workload.identity asks the customer which model the pods use.The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:workload identity
google_cloud_run_v2_job.migratetc-cloud-run-v2-job-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. google_cloud_run_v2_job.name: The job's own name, used for identification.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratetc-cloud-run-v2-job-template--template--containers--env--nameREVIEW
confirm only: the execution package already carries it, by the manual step MAN/draft/kubernetes/migrate/manifests-yaml (MANUAL): the 1 environment keys of the source (DJANGO_ENV) are the env entries of `terraform/kubernetes/migrate/manifests.yaml`: the keys are carried, and the values stay the person's
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. google_cloud_run_v2_job.template.template.containers.env.name: The name of an environment variable; an identifier, not the value it carries.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_job.migratetc-cloud-run-v2-job-template--template--volumes--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. google_cloud_run_v2_job.template.template.volumes.name: The volume's own name, used only to cross-reference it from volume_mounts.name; an internal wiring identifier with no security meaning 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 google_cloud_run_v2_job
google_cloud_run_v2_job.migrateterraform-destroy-guardREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. deletion_protection of a Cloud Run service, job or worker pool (on unless the source switches it off, which an explicit false states) only stops Terraform from destroying the resource; it is not an API protection.A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code.the mapping rule for google_cloud_run_v2_job
google_cloud_run_v2_service.servercloud-sql-connectionREVIEWThe 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 Cloud SQL connection volume (a connector socket) has no counterpart: the workload connects to the migrated Flex instance endpoint over TLS.A person points the workload at the endpoint of the migrated database instance (a Flex or MariaDB instance) over TLS, because the Cloud SQL connector socket has no counterpart.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serverdeployment-artifactREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. google_cloud_run_service.template.spec.containers.image; google_cloud_run_v2_service.template.containers.image, build_config.base_image, build_config.image_uri and 5 more; google_cloud_run_v2_job.template.template.containers.image; google_cloud_run_v2_worker_pool.template.containers.image, artifact or image reference (workload compatibility: a setting that binds the code to its runtime stays CRITICAL).A person confirms the executable artifact or image for the STACKIT target: where it is built or pulled from and that the same build runs there.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serverenvironmentREVIEWThe 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 writes the environment keys into the ConfigMap and the env of the Deployment or Job. A value is copied only when it is a quantity under a name that says so or a boolean, because any other value can hold a secret, so the rest of the values are a person's.A person fills in the values the manifest lists as not copied, in the ConfigMap on the cluster.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serveriam-invocationREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Cloud Run lets only callers with the invoker role through unless the service is made public. The draft carries no invocation check; the SKE exposure and the authentication of callers (application, authenticating proxy, or no exposure at all) are decided by a person.A person decides how callers of the workload are authenticated (in the application, behind an authenticating proxy, or by no exposure at all) and how the SKE exposure is set, since the draft carries no invocation check.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serveriam-policy-grantREVIEWA check of the knowledge base (run iam 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). A full IAM policy (member/role bindings) is set directly on the service via policy_data (google 8.4.0); STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — REVIEW.A person decides what this finding asks, and records the evidence or the decision. The finding says: A full IAM policy (member/role bindings) is set directly on the service via policy_data; STACKIT has no per-service IAM policy resource, so who may invoke the migrated SKE workload is decided by a person — the draft carries no invocation check.a check of the knowledge base (run iam policy)
google_cloud_run_v2_service.serverk4-cloud-run-volume-mount-cloud-run-v2-serviceREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. Where a volume appears in the container, which part of it is mounted there and the gcsfuse flags of a bucket mount (volume_mounts, mount_path and sub_path; volumes, gcs, mount_options). The application opens the bucket or share as a local directory, and the STACKIT draft mounts no volume into a container.A person provides the data in the target workload at the path the application expects, with an owner and mode it can use, and checks that it finds its files.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serverlocation-residencyREVIEWThe 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 region the service, job or worker pool runs in (google 8.4.0 `location`). A person confirms the region — REVIEW (critical, the value is not verified against the target).A person confirms the STACKIT region of the SKE cluster the workload runs on holds the residency the source region gave, since no mapping between Google and STACKIT regions is evidenced.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serversecretsREVIEWThe 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 Secret Manager reference in the environment becomes a secretKeyRef of the Deployment or Job and a secret volume a Kubernetes secret volume, and the head of the manifest lists the Secrets to create. The draft writes no Secret, because no value of a secret reaches an output.A person creates the Kubernetes Secrets the manifest lists, filled from STACKIT Secrets Manager (for example with an External Secrets Operator).the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serverservice-identityLEDGERWhether the draft carries this setting is decided by its semantic ledger entry "workload identity", and that entry does not state it as carried (it reads review or unsupported, is missing, or rests on a variable's default). The Google service account the workload runs as. target.workload.identity asks the customer which model the pods use.The ledger entry reads preserved or transformed with a value that is a fact of the source, or a person accepts the difference.ledger:workload identity
google_cloud_run_v2_service.servertc-cloud-run-v2-service-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. google_cloud_run_v2_service.name: The Service's own name; an identifier used for addressing/reference, not an access-control or safety property in itself.A person confirms the workload name on the cluster against what addresses or refers to the Cloud Run service name, or accepts the new name.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.servertc-cloud-run-v2-service-template--volumes--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. google_cloud_run_v2_service.template.volumes.name: The volume's own name, used only to cross-reference it from a volume_mounts.name entry; internal wiring identifier.A person keeps each volume name matched with the volume mount that refers to it when the volumes are rebuilt as workload volumes on the cluster.the mapping rule for google_cloud_run_v2_service
google_cloud_run_v2_service.serverterraform-destroy-guardREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. deletion_protection of a Cloud Run service, job or worker pool (on unless the source switches it off, which an explicit false states) only stops Terraform from destroying the resource; it is not an API protection.A person decides whether the replacement keeps the guard with lifecycle { prevent_destroy = true } in the Terraform code.the mapping rule for google_cloud_run_v2_service
google_firebase_project.defaulttc-firebase-project-projectREVIEWThe mapping rule for this kind of unit recognises the unit but only passes this setting to a person; it does not decide its value. google_firebase_project.project (identity access): The Google Cloud project the resource is created in. IAM policy, organisation policy and audit configuration are inherited from the project, so it decides who can act on the resource and what it is isolated from. Firebase has no STACKIT counterpart, so the registration of the app is not moved and the backend the app talks to is chosen by a person.A person decides which STACKIT project, and with it which access rules, holds the replacement.the mapping rule for google_firebase_project
google_pubsub_topic.fauxtc-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. google_pubsub_topic.name: The topic's own resource name, which publishers and subscribers address it by; access to it is controlled by IAM, not by the name string itself, and a changed name breaks every client that uses the old one.A person confirms the topic name the replacement messaging service carries against the publishers and subscribers that use it, or accepts the new name.the mapping rule for google_pubsub_topic
google_secret_manager_secret.django_admin_passwordsecret-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 settings of the secret beside its value (secret-value): STACKIT replicates it itself (no replica locations or per-replica keys), tags and version states have no counterpart, and IAM members and policy map to Secrets Manager users (read-only or read-write for a whole instance) or to experimental role bindings on a secret group — REVIEW.A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance.the mapping rule for google_secret_manager_secret
google_secret_manager_secret.django_admin_passwordsecret-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. google_secret_manager_secret_version.secret_data: the value of the secret. StackToIT never reads it and never writes it into the draft; the API step of the secret writes the document the customer supplies.A person decides where the value comes from, supplies the document and the step has run.the mapping rule for google_secret_manager_secret
google_secret_manager_secret.django_admin_passwordtcr-secret-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. google_secret_manager_secret.secret_id: The secret's own resource identifier; access to the secret's value is controlled by IAM bindings and replication/encryption settings, not by the id string itself.A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name.the mapping rule for google_secret_manager_secret
google_secret_manager_secret.django_settingssecret-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 settings of the secret beside its value (secret-value): STACKIT replicates it itself (no replica locations or per-replica keys), tags and version states have no counterpart, and IAM members and policy map to Secrets Manager users (read-only or read-write for a whole instance) or to experimental role bindings on a secret group — REVIEW.A person recreates the secret in the Secrets Manager instance, since its data is not written into the draft, and decides for each IAM member whether it gets a user of the whole instance, a role binding on a secret group, or a separate instance.the mapping rule for google_secret_manager_secret
google_secret_manager_secret.django_settingssecret-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. google_secret_manager_secret_version.secret_data: the value of the secret. StackToIT never reads it and never writes it into the draft; the API step of the secret writes the document the customer supplies.A person decides where the value comes from, supplies the document and the step has run.the mapping rule for google_secret_manager_secret
google_secret_manager_secret.django_settingstcr-secret-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. google_secret_manager_secret.secret_id: The secret's own resource identifier; access to the secret's value is controlled by IAM bindings and replication/encryption settings, not by the id string itself.A person confirms the secret name in STACKIT Secrets Manager against what refers to the source secret ID, or accepts the new name.the mapping rule for google_secret_manager_secret
google_service_account.automationaccount-nameREVIEWA check of the knowledge base (sa account id not visible) 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 ID becomes the stackit_service_account name (shortened to the STACKIT name rules; pinned provider) — TRANSFORMED; the e-mail address changes. An ID not visible statically (or a repeated account) is named NOT CARRIED — REVIEW (check sa-account-id-not-visible).A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.a check of the knowledge base (sa account id not visible)
google_service_account.automationrole-bindingsREVIEWThe 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 grants of the estate that name the account: a grant on a project, a folder or an organisation is written as a STACKIT role assignment of the account when its role and members are visible statically and it has no condition, and a grant that lets another account act as it is written as an Act-As assignment. A Google role is written as a STACKIT role only where the mapping shows the STACKIT role holds the same permissions or fewer on a project; every other role is an input that names the candidates, and a person confirms each. A binding or a policy is authoritative (it removes the members of its role that it does not list) and a role assignment only adds, which the draft says on each: members that hold the role outside the configuration keep it on STACKIT until a person removes them.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_service_account
google_service_account.clientaccount-nameREVIEWA check of the knowledge base (sa account id not visible) 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 ID becomes the stackit_service_account name (shortened to the STACKIT name rules; pinned provider) — TRANSFORMED; the e-mail address changes. An ID not visible statically (or a repeated account) is named NOT CARRIED — REVIEW (check sa-account-id-not-visible).A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.a check of the knowledge base (sa account id not visible)
google_service_account.clientrole-bindingsREVIEWThe 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 grants of the estate that name the account: a grant on a project, a folder or an organisation is written as a STACKIT role assignment of the account when its role and members are visible statically and it has no condition, and a grant that lets another account act as it is written as an Act-As assignment. A Google role is written as a STACKIT role only where the mapping shows the STACKIT role holds the same permissions or fewer on a project; every other role is an input that names the candidates, and a person confirms each. A binding or a policy is authoritative (it removes the members of its role that it does not list) and a role assignment only adds, which the draft says on each: members that hold the role outside the configuration keep it on STACKIT until a person removes them.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_service_account
google_service_account.serveraccount-nameREVIEWA check of the knowledge base (sa account id not visible) 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 ID becomes the stackit_service_account name (shortened to the STACKIT name rules; pinned provider) — TRANSFORMED; the e-mail address changes. An ID not visible statically (or a repeated account) is named NOT CARRIED — REVIEW (check sa-account-id-not-visible).A person decides what this finding asks, and records the evidence or the decision. The finding says: The account ID is not visible statically; the STACKIT account is named after the source address. — a variable's default, not a fact.a check of the knowledge base (sa account id not visible)
google_service_account.serverrole-bindingsREVIEWThe 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 grants of the estate that name the account: a grant on a project, a folder or an organisation is written as a STACKIT role assignment of the account when its role and members are visible statically and it has no condition, and a grant that lets another account act as it is written as an Act-As assignment. A Google role is written as a STACKIT role only where the mapping shows the STACKIT role holds the same permissions or fewer on a project; every other role is an input that names the candidates, and a person confirms each. A binding or a policy is authoritative (it removes the members of its role that it does not list) and a role assignment only adds, which the draft says on each: members that hold the role outside the configuration keep it on STACKIT until a person removes them.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_service_account
google_sql_database_instance.postgresdatabase-usersREVIEWA check of the knowledge base (sql user not generated) needs a value the scan cannot read statically, so it could not decide. A built-in user of a PostgreSQL instance becomes a stackit_postgresflex_user with the same username (pinned provider) — TRANSFORMED. IAM users (and a name or type not visible statically) are not generated — REVIEW (check sql-user-not-generated); users of the other engines are named NOT CARRIED — REVIEW.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 (sql user not generated)
google_sql_database_instance.postgresproject-scopeREVIEWThe 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 project of the instance (google 8.4.0 `project`: "The ID of the project in which the resource belongs. If it is not provided, the provider project is used"). A STACKIT project is the scope for ownership, resource consumption and access control (docs.stackit.cloud/platform/resource-manager/basics/projects/): whether the database's source project becomes the project of the rest of the estate is a design decision no rule evidences — a person confirms it — REVIEW (critical).A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_sql_database_instance
google_sql_database_instance.postgresregion-residencyREVIEWThe 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 region of the instance (google 8.4.0 `region`; unset means the provider's region). A person confirms the region — REVIEW (critical, the value is not verified against the target).A person confirms the STACKIT region of the instance (and of a read replica, decided with its primary) holds the residency the source region gave.the mapping rule for google_sql_database_instance
google_sql_database_instance.postgrestc-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. google_sql_database_instance.name: The instance's name/label; does not itself grant access, encrypt data, or control backups/availability/residency.A person confirms the instance name the STACKIT database carries against what refers to the source instance name, or accepts the new name.the mapping rule for google_sql_database_instance
google_sql_database_instance.postgrestcf-sql-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. google_sql_database.name (a facet of the unit): The literal database name; determines the connection target's label but does not itself grant or restrict access, encrypt data, or affect backups/availability/residency.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_sql_database_instance
google_sql_database_instance.postgresuser-and-database-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 source password is not copied (STACKIT generates it: stackit_postgresflex_user.password is computed), a host restriction and ABANDON deletion policies have no counterpart (pinned provider) — the draft names them NOT CARRIED — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_sql_database_instance
google_storage_bucket.mediabucket-regionREVIEWThe 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-region location (us-central1, europe-west3, ...), or one not visible statically: the draft sets no region on stackit_objectstorage_bucket (`region`: "if not defined, the provider region is used", pinned provider), so the bucket lands in the STACKIT region the user sets, not in the source's — a person confirms the residency — REVIEW.A person confirms the value against the target, or the knowledge base gains a rule that decides this setting.the mapping rule for google_storage_bucket
google_storage_bucket.mediaforce-destroyUNSUPPORTEDA check of the knowledge base (gcs force destroy) found a setting the target has no counterpart for (a finding of this unit describes it). stackit_objectstorage_bucket (pinned provider) "cannot be destroyed if the bucket contains objects" (schema description): force_destroy = false — a destroy that stops at a non-empty bucket — is what STACKIT does, PRESERVED; true has no counterpart, UNSUPPORTED (check gcs-force-destroy).A person accepts the difference or the design changes: nothing in the source can make the target carry it.a check of the knowledge base (gcs force destroy)
google_storage_bucket.mediageo-replicationREVIEWThe value is read from a variable's default; that is not a fact of the source. A custom_placement_config not visible statically (a dynamic block over an unknown for_each, a whole value from a variable) may be absent: the facts state no replication, the ledger writes no line and a person decides (REVIEW by the case; 2026-09-25 unknown-value audit — it used to be claimed as replicated).The value is set where the module is called (a literal), the variable is given its value in a variable file of the scan (--var-file), or a person confirms the value production uses.the value comes from a variable's default; the mapping rule for google_storage_bucket
google_storage_bucket.mediaiam-accessREVIEWA check of the knowledge base (gcs iam) 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 who may access the bucket, granted with IAM bindings or ACL entries.A person decides it as that finding asks, and the finding's closing evidence or decision is recorded. A person creates the bucket policies and Object Storage credentials that give the same access on STACKIT.a check of the knowledge base (gcs iam)
google_storage_bucket.mediaiam-grantREVIEWA check of the knowledge base (gcs iam) 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 value-level reader of who gets which role (`iam-access` above is the facet as a whole): role, member(s) and condition. A GCP principal (user:, group:, serviceAccount:, allUsers) and a predefined role have no STACKIT counterpart in a bucket policy, whose statements name principals and S3 actions (supported-permissions-in-bucket-policies docs; the draft writes no policy) — a person translates each grant — REVIEW for every value, allUsers included (that one is also public-access, TRANSFORMED).A person decides what this finding asks, and records the evidence or the decision. The finding says: Bucket access is granted with IAM bindings or ACL entries; on STACKIT it becomes bucket policies and Object Storage credentials.a check of the knowledge base (gcs iam)
google_storage_bucket.mediapublic-accessREVIEWA check of the knowledge base (gcs public) needs a value the scan cannot read statically, so it could not decide. The counterpart is a bucket policy with Principal "*" and s3:GetObject (documented sample), but stackit_objectstorage_bucket has no policy attribute and the provider no bucket-policy resource, so the draft writes none: REVIEW, as for the IP rules.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 (gcs public)
google_storage_bucket.mediatc-storage-bucket-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 Cloud Storage bucket, in lowercase and at most 63 characters per the provider documentation, by which applications address it.A person confirms the Object Storage bucket name against the applications and tools that use the source bucket name, or accepts the new name.the mapping rule for google_storage_bucket

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).