1---2name: sifap-infrastructure-23description: Defines SIFAP IaC and Azure safety for provider baselines, identity, state, networks, plans, and approvals. Use when editing infrastructure, Compose, or deployment configuration.4---56<!-- Generated from harness/github-copilot/plugins/mainframe-natural-adabas-classic/instructions/sifap-infrastructure.instructions.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# SIFAP infrastructure conventions - IaC and Azure910These instructions apply to SIFAP infrastructure and local Compose files. They are authoritative for the11workshop IaC/cloud baseline, state protection, identity, planning, and mutation approvals; approved12architecture decisions and current provider schemas win for resource-specific behavior.1314## Provider and state1516- Treat AzureRM 3.x as a workshop compatibility baseline, not a latest-version claim.17- Pin provider and module constraints and commit dependency locks when repository policy requires them.18- Store state remotely with encryption, access control, locking, and audit logs.19- `sensitive = true` redacts display but still stores values in plan or state. Use ephemeral or write-only20 flows only when supported by the selected tool and provider versions.2122## Identity, network, and changes2324- Prefer workload or managed identity over long-lived client secrets.25- Make public access, private endpoints, DNS, firewall, and exceptions explicit and evidence-backed.26- Run formatting, validation, lint, security checks, and a reviewed plan before apply.27- Never run apply, destroy, import, state mutation, role assignment, or production change without approval.28- Pin Compose images to immutable versions or digests and keep local credentials out of Git.2930## Conventions3132| Rule | Rationale |33| --- | --- |34| Protect state as a secret-bearing asset | State often persists sensitive resource attributes. |35| Use identity instead of stored credentials | Credential rotation and leakage risk decrease. |36| Review plans before mutation | Drift and destructive replacement become visible. |37| Verify provider schemas | Unsupported properties cannot be inferred from examples. |3839## Do / Do Not4041| Do | Do not |42| --- | --- |43| Run `terraform plan` before approved apply | Treat validation as proof apply will succeed |44| Document network exceptions | Enable public access by convenience |45| Use existing module patterns | Create one oversized infrastructure module |46| Report policy-modified outcomes | Claim declared IaC equals deployed state without evidence |4748## Checklist Before Opening a PR4950- [ ] Provider, module, and runtime baselines are explicit and verified.51- [ ] State, identity, secrets, and network exposure are handled safely.52- [ ] Formatting, validation, lint, security, and plan checks ran as applicable.53- [ ] No mutation or permission change occurred without approval.54- [ ] Compose assets contain no committed credentials and use pinned images.55- [ ] Actual results, policy divergence, and unrun checks are reported honestly.