Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 2.94 KB

File metadata and controls

59 lines (44 loc) · 2.94 KB

Contribution

Thanks for considering contributing to this project! We are really glad you are reading this, because we need volunteer developers to help this project come to fruition.

Please note we have a code of conduct, please follow it in all your interactions with the project.

Issues

If you find any bugs, please file an issue in the GitHub issues page. Please fill out the provided template with the appropriate information.

If you are taking the time to mention a problem, even a seemingly minor one, it is greatly appreciated, and a totally valid contribution to this project. Thank you!

Generated artefacts are regenerated, never hand-edited

This repository is a code generator, and most of what it commits is its own output. Blueprints, probe recordings, OpenAPI snapshots and the pilot provider under pilot/ are all generated. To change any of them, change the input — the blueprint, a template, the generator, or the recorded probe — and re-run the relevant command.

Stale generated code compiles perfectly well, so drift would otherwise be invisible. CI therefore regenerates everything, fails if the result differs from what was committed, and then builds and tests the output as well, because a generator change can produce a clean diff and broken code.

Every generated file carries this header, and it is the authoritative signal:

// Code generated by tfpfgen from blueprints/<path>
// (sha256:…). DO NOT EDIT.

A small number of files are scaffolded once and then owned by you — those carry no such header, and the generator will not touch them again. The generated boundary documentation is the full list.

Three consequences worth knowing before opening a pull request:

  • Generated output must be deterministic. No timestamps, no tool version, no absolute paths, and no reliance on Go map iteration order in anything written to disk. A single such value makes the drift check fail on a run that changed nothing, which destroys its usefulness.
  • Never commit a real credential to a recording. Cassettes are committed by design. Redaction allowlists header values rather than denylisting them, and a final pass fails the recording outright — exit 7, nothing written — if any credential-shaped value survives into the output. There is nothing extra to run before pushing; the check is part of every record run, and probe verify re-derives committed recordings offline.
  • Regenerate with the postcheck on. provider generate finishes by compiling the output, regenerating its registry docs and running terraform fmt (-skip-postcheck exists for tight inner loops only). A PR that arrives with stale docs/ or unformatted fixtures is a PR whose final provider generate was skipped — CI will say so, one check later.