Verify MCP access for each tool surface used in this workflow. Make one read-only call per surface. If any auth check fails, stop and report before proceeding.
-
Declare execution mode and create an evidence folder (local-only).
- Set execution mode to: read-only execution.
- Create your evidence directory and keep all outputs there.
- You must not commit evidence; it may include sensitive identifiers.
Example (portable):
DATE="$(date -u +%Y-%m-%d)"
EVIDENCE_DIR=".generated/evidence/prereqs-drift/${DATE}"
mkdir -p "${EVIDENCE_DIR}" "${EVIDENCE_DIR}/rms" "${EVIDENCE_DIR}/iam" "${EVIDENCE_DIR}/diffs"
-
Pin the expected prerequisites spec (do not copy it).
- Open the Confluence prerequisites page for the selected version (see References).
- In
${EVIDENCE_DIR}/expected.md, record:
- which version you are validating against (
v2.3)
- links to the specific sections/tables you will compare against (IAM policies, dynamic groups, variables/outputs)
- the names of the expected IAM resources (policy names, dynamic group names) you will check
- Do not paste full policy statements or full variable tables; reference the anchors instead.
-
Locate the RMS stack and capture stack metadata (sanitized).
- Find the stack by display-name/tag/compartment using the Resource Manager Console or OCI CLI.
- Capture:
- stack display-name
- compartment name
- stack lifecycle state
- creation time / last update time
- terraform version (as configured in RMS)
If using OCI CLI, store raw JSON locally, and sanitize before copying snippets into any report:
oci resource-manager stack get \
--stack-id "${STACK_ID}" \
--output json > "${EVIDENCE_DIR}/rms/stack.get.json"
-
Version alignment check (v2.3).
- Determine which prerequisites stack version is actually deployed.
- Prefer (in order):
- an explicit Terraform output/variable indicating the prerequisites stack version
- an RMS stack tag/label indicating the version
- the Terraform config source reference (if the stack tracks a specific repo path/commit/tag)
- Record your “version determination method” and result in
${EVIDENCE_DIR}/diffs/version.md.
Notes:
- If you cannot determine the version reliably, treat it as drift and escalate to a prerequisites stack owner.
- Drift hotspot reminder: dynamic groups + policy statements often drift between versions.
-
IAM drift check: policies, dynamic groups, and groups (read-only).
- Export the current IAM configuration relevant to prerequisites.
- Produce diff-friendly text views, then compare them to the expected names/sections you recorded in
${EVIDENCE_DIR}/expected.md.
Minimum checks (you must record pass/fail for each):
- Policies: expected policies exist, and statements match the expected version.
- Dynamic groups: expected dynamic groups exist, and matching rules align.
- Groups (if used by the stack): expected groups exist and memberships are plausible.
Example export shape (adjust scope to your tenancy conventions):
oci iam policy list --all \
--compartment-id "${ROOT_COMPARTMENT_ID}" \
--output json > "${EVIDENCE_DIR}/iam/policies.list.json"
jq -r '.data[] | .name' "${EVIDENCE_DIR}/iam/policies.list.json" | sort \
> "${EVIDENCE_DIR}/diffs/policy.names.txt"
Sanitization requirement:
- If any stored output includes sensitive identifiers, you must sanitize before sharing.
- Do not paste raw JSON outputs into tickets/PRs/chat.
-
RMS validation (read-only): last job health and state sanity.
- Identify the most recent RMS job(s): apply, plan, or other.
- Record:
- last successful apply time (if any)
- last failure time + error summary (if any)
- whether the stack is currently locked by an in-progress job
Example:
oci resource-manager job list --all \
--stack-id "${STACK_ID}" \
--output json > "${EVIDENCE_DIR}/rms/jobs.list.json"
-
MUTATION GATE: optional drift detection / plan job (stop + confirm).
Running a Terraform plan via RMS does not apply changes, but it does create a new RMS job and may write artifacts.
- If you decide to run a plan/drift job, you must stop and follow the mutation gate in:
skills/ocm-dev/execution-baselines-detail.md
Your confirmation request must include:
- target stack (by display-name + compartment name)
- action: “create RMS plan job (no apply)”
- expected outcome: “plan output showing zero changes” (or a bounded set of expected diffs)
- rollback story: “cancel the plan job; no resources are modified because apply is not executed”
- evidence to capture: plan summary + sanitized diff list
If approved, run the plan via the Resource Manager Console (preferred) or OCI CLI, then store the plan artifacts under ${EVIDENCE_DIR}/rms/.
-
Write a drift report (single artifact).
- Create
${EVIDENCE_DIR}/prereqs-drift-report.md with:
- Inputs (version, tenancy alias, regions, stack display-name/compartment)
- Version alignment result (and how you determined it)
- IAM drift results (policies / dynamic groups / groups) with clear pass/fail bullets
- RMS validation result (last job health)
- Findings summary (what is drifting, severity, and recommended next actions)
- Mutation recommendation (yes/no) and the exact change owner to engage