Skip to content

[#850] defense-in-depth: in-place repin path should inject the S7635 marker (latent, guard against future config) #879

Description

@don-petry

Follow-up to #877/#878. codeant correctly identified that the driver's in-place repin path (deploy_repo when repin_source = existing stub body, e.g. BODY_PRESERVING_WORKFLOWS + meta-repo channel-consumers) rewrites only uses:/agent_ref and would flag an S7635-marker-drift but never RESTORE the marker → a non-converging drift loop.

Verified LATENT (2026-07-22): no currently-marker-affected stub reaches this path — dev-lead/dependabot-automerge are SKIP_SELF_MANAGED on both meta-repos (never swept), auto-rebase deploys verbatim (template carries the marker), and neither feature-ideation (the sole BODY_PRESERVING workflow) nor pr-auto-review (the meta-repo SKIP_OVERRIDES consumer) has a real secrets: inherit line. So it cannot churn today.

Why fix anyway (defense-in-depth): the moment a marker-affected workflow is added to BODY_PRESERVING_WORKFLOWS, or a secrets: inherit template is opted into a meta-repo via SKIP_OVERRIDES, this becomes a live non-converging loop.

Scope

  • On the in-place repin path, when the template template_requires_s7635_marker and the repinned body lacks the marker, INJECT # NOSONAR(githubactions:S7635) first-party trusted reusable onto the secrets: inherit line of the repinned body (or fall back to the template body).
  • Bats: an in-place repin of a marker-less body whose template requires the marker produces a body that carries it (converges in one pass).

Refs: Epic #850, #877/#878, codeant review on #878.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dev-leadFor dev-lead agent pickup

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions