Skip to content

PR body template

Every write verb renders this template into the PR body. The <petrova:metadata> YAML block is parsed by re-run detection — do not edit it manually on emitted PRs.

<!--
Petrova action PR body template.
Rendered by every write verb. Variables in {{double-braces}} are
substituted at PR-creation time; the <petrova:metadata> block is
parseable so re-runs detect existing PRs by idempotency key.
-->
## Petrova action: `{{verb}}`
<!-- petrova:metadata -->
```yaml
petrova:
verb: {{verb}}
target_repo: {{target_repo}}
idempotency_key: {{idempotency_key}}
schema_version: 1
schema_fingerprint: {{schema_fingerprint}} # SHA256[:12] of the verb's schema file
actor: {{actor}}
triggered_by:
kind: {{triggered_by.kind}}
ref: {{triggered_by.ref}}
applied_at: {{applied_at_iso}}

{{rationale_paragraph}}

Trigger: {{triggered_by.ref}} ({{triggered_by.kind}}).

{{#each mr_citations}}

  • {{this}} — {{mr_short_descriptions[this]}} {{/each}}

{{#each diff_preview.files}}

  • {{operation}} {{path}}{{#if size_bytes}} ({{size_bytes}} B){{/if}} {{/each}}

{{#if verb_specific_summary}}

{{verb_specific_summary}} {{/if}}

  • Trigger ref resolves to a real artefact at the cited path.
  • MR citations actually upheld by the diff (spot-check at least one).
  • No project intent introduced — content grounds in docs/spec/, docs/north-star/, or explicit human input recorded in a decision doc (MR-12).
  • Idempotency key absent from any open PR against this repo (re-run check).
  • If verb is request_merge_when_green: target repo’s registry.yaml profile permits auto-merge for this fleet.

To re-execute this verb safely (no-op if already applied):

Terminal window
petrova {{verb}} --idempotency-key {{idempotency_key}} --apply

Same key against an open PR returns status: skipped_idempotent with this PR’s ref. To force a new PR with different content, recompute the key from new inputs.


Generated by petrova control plane. Do not edit the <petrova:metadata> block — it is parsed by re-run detection.