# plunge > Pulumi with per-resource locking. The source, and the reference material the site links to, is at https://github.com/INTENTIUS/plunge. A page's prompt sits under "Optional: hand this page to your coding agent" and in llms.txt under the page. Every prompt ends with this rule, left out below: Never run `plunge up`, `plunge destroy` or `plunge stack adopt --yes`, approve or apply a saved plan, or merge; never edit or remove a plunge-stack or plunge-urn tag or label by hand. ## Pages - [Start a new stack](https://intentius.io/plunge/use/start/): A five-minute offline quickstart, then installing plunge for real, choosing a plunge+ backend URL and running the first update. - Optional agent prompt: Follow https://intentius.io/plunge/use/start/. Install plunge from its v0.2.0 release, choose a plunge+ URL for this project with me, and run `plunge preview`. Report the preview. - [Overview](https://intentius.io/plunge/how-it-works/): How plunge keeps ownership on the resources and state in one record per resource. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/ and explain the changes plunge would make for the Pulumi program in this repository. Change no files. - [AWS](https://intentius.io/plunge/aws/): Two tags mark each resource. Cloud Control lists them before a create. - Optional agent prompt: Read https://intentius.io/plunge/aws/ and tell me which of its pages applies to my task. Change no files. - [Adopt](https://intentius.io/plunge/aws/adopt/): Move a stock Pulumi stack on AWS onto plunge records with plunge stack adopt. - Optional agent prompt: Follow https://intentius.io/plunge/aws/adopt/. Run `plunge stack adopt --json --stack ` without --yes and report the status and every refusal. - [Compatibility](https://intentius.io/plunge/aws/compatibility/): Which AWS providers and types take markers, which plunge names, and how Cloud Control lists them. - Optional agent prompt: Follow https://intentius.io/plunge/aws/compatibility/. List the AWS resource types in this program and say for each whether it takes markers and whether C1 covers it. Change no files. - [Gate](https://intentius.io/plunge/aws/gate/): An IAM condition on the plunge-stack tag can scope a role to one stack. - Optional agent prompt: Follow https://intentius.io/plunge/aws/gate/. Draft an IAM policy scoping one role to this stack and show it to me. - [Operate](https://intentius.io/plunge/aws/operate/): Rename, remove, apply a saved plan, run from CI, and run twice at once on AWS. - Optional agent prompt: Follow https://intentius.io/plunge/aws/operate/ for my change. Edit the program, run `plunge preview --save-plan plan.json` and report the plan. - [Azure](https://intentius.io/plunge/azure/): Two tags mark each resource. ARM lists them by tag. - Optional agent prompt: Read https://intentius.io/plunge/azure/ and tell me which of its pages applies to my task. Change no files. - [Adopt](https://intentius.io/plunge/azure/adopt/): Move a stock Pulumi stack on Azure onto plunge records. - Optional agent prompt: Follow https://intentius.io/plunge/azure/adopt/. Run `plunge stack adopt --json --stack ` without --yes and report the status and every refusal. - [Compatibility](https://intentius.io/plunge/azure/compatibility/): Which Azure providers and types take markers, and how ARM lists them. - Optional agent prompt: Follow https://intentius.io/plunge/azure/compatibility/. List the Azure resource types in this program and say for each whether it takes tags. Change no files. - [Gate](https://intentius.io/plunge/azure/gate/): A role on the stack resource groups grants access, and Azure Policy can check the tag. - Optional agent prompt: Follow https://intentius.io/plunge/azure/gate/. Draft the role assignment and the Azure Policy rule for this stack. Show them to me; apply nothing. - [Operate](https://intentius.io/plunge/azure/operate/): Rename, remove, apply a saved plan, and run twice at once on Azure. - Optional agent prompt: Follow https://intentius.io/plunge/azure/operate/ for my change. Edit the program, run `plunge preview --save-plan plan.json` and report the plan. - [GCP](https://intentius.io/plunge/gcp/): Two labels mark each resource, as digests. Each service lists its own. - Optional agent prompt: Read https://intentius.io/plunge/gcp/ and tell me which of its pages applies to my task. Change no files. - [Adopt](https://intentius.io/plunge/gcp/adopt/): Move a stock Pulumi stack on Google Cloud onto plunge records. - Optional agent prompt: Follow https://intentius.io/plunge/gcp/adopt/. Run `plunge stack adopt --json --stack ` without --yes and report the status and every refusal. - [Compatibility](https://intentius.io/plunge/gcp/compatibility/): Which Google Cloud types take markers, which plunge names, and how each is listed. - Optional agent prompt: Follow https://intentius.io/plunge/gcp/compatibility/. List the GCP resource types in this program and say for each whether it takes labels and how it is listed. Change no files. - [Gate](https://intentius.io/plunge/gcp/gate/): On Google Cloud the project is the fence. Give each stack its own. - Optional agent prompt: Follow https://intentius.io/plunge/gcp/gate/. Draft the project IAM bindings that hand this stack's project to its runner. Show them to me; apply nothing. - [Operate](https://intentius.io/plunge/gcp/operate/): Rename, remove, apply a saved plan, and run twice at once on Google Cloud. - Optional agent prompt: Follow https://intentius.io/plunge/gcp/operate/ for my change. Edit the program, run `plunge preview --save-plan plan.json` and report the plan. - [Glossary](https://intentius.io/plunge/glossary/): The words this site uses, each in a sentence or two, with a link to the page that covers it. - Optional agent prompt: Read https://intentius.io/plunge/glossary/ and explain the terms I ask about, in the context of this repository. Change no files. - [Resource-level concurrency](https://intentius.io/plunge/how-it-works/concurrency/): Each record write in plunge is conditional, so runs on different resources of one stack proceed together and a clash is refused by name. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/concurrency/ and say which of our CI jobs can update one stack together. Change no files. - [Deletes](https://intentius.io/plunge/how-it-works/deletes/): A record is never permission to delete. plunge checks the live marker before every delete, destroy included. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/deletes/ and say which resources in this stack a destroy would refuse to delete, and why. Change no files. - [Drift of one resource](https://intentius.io/plunge/how-it-works/drift/): plunge drift reads one resource's record and calls its provider's Read once, with no program run and no stack-wide refresh. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/drift/. Run `plunge drift --resource --stream` for the URN I name and report the drift-record line. Change no files. - [Identity](https://intentius.io/plunge/how-it-works/identity/): The two markers on each resource, how they are written on tags and on labels, and which types the record holds instead. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/identity/ and list which resource types in this program take markers and which would be held by their record. Change no files. - [Names](https://intentius.io/plunge/how-it-works/names/): plunge names an unnamed resource the same way on every run, so a second create of it meets the first at the cloud. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/names/ and list the resources in this program whose names plunge would choose, and any pulumi:autonaming pattern it would refuse. Change no files. - [Records](https://intentius.io/plunge/how-it-works/records/): Record contents, the five stores, each store's conditional write, and the checks a store runs when it opens. - Optional agent prompt: Read https://intentius.io/plunge/how-it-works/records/ and say which plunge+ store fits this team, and which query keys its URL needs. Change no files. - [Kubernetes](https://intentius.io/plunge/kubernetes/): Two labels mark each object, as digests. Records can live in the cluster. - Optional agent prompt: Read https://intentius.io/plunge/kubernetes/ and tell me which of its pages applies to my task. Change no files. - [Adopt](https://intentius.io/plunge/kubernetes/adopt/): Move a stock Pulumi stack of Kubernetes objects onto plunge records. - Optional agent prompt: Follow https://intentius.io/plunge/kubernetes/adopt/. Run `plunge stack adopt --json --stack ` without --yes and report the status and every refusal. - [Compatibility](https://intentius.io/plunge/kubernetes/compatibility/): Which Kubernetes objects take markers and how they are listed. - Optional agent prompt: Follow https://intentius.io/plunge/kubernetes/compatibility/. List the Kubernetes kinds in this program and say for each whether it takes markers. Change no files. - [Gate](https://intentius.io/plunge/kubernetes/gate/): An admission policy on the plunge-stack label can fence writes by stack. - Optional agent prompt: Follow https://intentius.io/plunge/kubernetes/gate/. Compute the plunge-stack digest for this stack and draft the admission policy match for it. Show it to me; apply nothing. - [Operate](https://intentius.io/plunge/kubernetes/operate/): Rename, remove, apply a saved plan, and run twice at once on Kubernetes. - Optional agent prompt: Follow https://intentius.io/plunge/kubernetes/operate/ for my change. Edit the program, run `plunge preview --save-plan plan.json` and report the plan. - [Reference](https://intentius.io/plunge/reference/): The commands plunge adds, its backend URLs and their query keys, environment variables, exit codes, and the Automation API. - Optional agent prompt: Read https://intentius.io/plunge/reference/ and check this repository's plunge backend URL and environment against it. Report anything it does not list. Change no files. - [The adopt document](https://intentius.io/plunge/reference/adopt-json/): The JSON document plunge stack adopt --json prints, version v1, and its refusal codes. - Optional agent prompt: Read https://intentius.io/plunge/reference/adopt-json/ and check the code in this repository that reads plunge's adopt document against it. Report any field or code it does not handle. Change no files. - [Record store bucket](https://intentius.io/plunge/use/bucket/): Create an S3 or GCS bucket the record store opens without a waiver. - Optional agent prompt: Follow https://intentius.io/plunge/use/bucket/. Show me the commands to create our record bucket, filled in with the names I give. Run nothing. - [CI/CD](https://intentius.io/plunge/use/cicd/): Run plunge from a pipeline, with a saved plan checked against the records it read. - Optional agent prompt: Follow https://intentius.io/plunge/use/cicd/ and draft a pipeline for this repository: a preview job that saves a plan on pull requests, and an update job that applies it after approval. Show me the file; do not commit it. - [Adopt an existing stack](https://intentius.io/plunge/use/migrate/): Adopt a stock Pulumi stack onto per-resource records with plunge stack adopt, and back out with a stock import. - Optional agent prompt: Follow https://intentius.io/plunge/use/migrate/. Run `plunge stack adopt --json --stack ` without --yes and report the status, each resource's fate and any refusal. - [Pending operations and crashes](https://intentius.io/plunge/use/pending/): The pending operations a crashed run leaves on a resource's record, the runs they block, and how to clear them. - Optional agent prompt: Follow https://intentius.io/plunge/use/pending/. Run `plunge stack export` for this stack and list every pending operation with its URN. Change nothing. - [Recover a stack](https://intentius.io/plunge/use/recover/): Recovery from lost records, a crashed run or a lost machine, and the cases plunge cannot rebuild today. - Optional agent prompt: Follow https://intentius.io/plunge/use/recover/ for the failure I describe and tell me which section applies. Change nothing. - [Remove a resource](https://intentius.io/plunge/use/remove/): Delete it from the program and update, or drop its record and leave the object running. - Optional agent prompt: Follow https://intentius.io/plunge/use/remove/. Remove the resource I name from the program and run `plunge preview`. Report the delete it plans. - [Rename a resource](https://intentius.io/plunge/use/rename/): A rename in Pulumi is an alias. plunge's handling of the marker and the record on a rename has not been checked yet. - Optional agent prompt: Follow https://intentius.io/plunge/use/rename/. Add the alias for the rename I describe and run `plunge preview`. Report the steps it plans for that resource. - [Set up by hand](https://intentius.io/plunge/use/setup/): The bucket settings each store checks when it opens, and the credentials it reads. - Optional agent prompt: Follow https://intentius.io/plunge/use/setup/. Check our record bucket's settings with read-only CLI calls and report which ones the store would refuse. Change nothing. - [Tutorial](https://intentius.io/plunge/use/tutorial/): Run the aws-ts corpus program under plunge on the floci emulator, see the markers and the records, and read one resource's drift. - Optional agent prompt: Follow https://intentius.io/plunge/use/tutorial/ up to step 5. Install plunge, start floci, log in to the plunge+file:// backend and run `plunge preview --stack floci`, then report the preview. I run `plunge up` myself. ## Full text - [llms-full.txt](https://intentius.io/plunge/llms-full.txt): every page above in one file