Skip to content

Name the downstream artifacts a standard governs, so changing it has a known blast radius #143

Description

A standard that prescribes an exact artifact structure changed, and the 96 artifacts embodying it were never updated. Nothing detected the gap for eight days.

Context and request

PR Format specifies the exact ending structure a pull request description carries: a horizontal rule, a collapsible Technical details block, then a collapsible Relevant issues (or links) block. That structure was introduced by #95 in commit f3aede8 on 2026-07-25.

The artifact that puts this structure in front of a contributor is .github/pull_request_template.md, which every repository carries. A sweep of the PSModule organization on 2026-08-02 found 96 of 96 repositories still carrying the pre-#95 structure — a plain ## Technical Details heading rather than a collapsed block, Related issues rather than Relevant issues (or links), and no separator. None conform.

Every one of those templates was correct when written. The standard moved and nothing moved with it, so a contributor or agent filling in the template exactly as provided produces a pull request that does not comply with the standard the same repository points them at. Found while fixing an unrelated linter gap in PSModule/Template-PSModule#40.

This is the general case, not one bad template. A change to a normative structure in this repository has a blast radius in other repositories, and today nothing states what that radius is or confirms it was covered.

Desired experience

Changing a normative structure names the artifacts that embody it, so the downstream work is visible at the moment the decision is made rather than discovered later by someone working on something else.

Acceptance criteria

  • A standard that prescribes a concrete artifact structure identifies the artifacts that embody it.
  • Changing such a standard produces a known, reviewable list of downstream artifacts to update.
  • A reviewer can tell from the pull request whether the downstream work is done, tracked, or deliberately deferred.
  • The check does not depend on the author remembering, since the eight-day gap here happened with capable authors and a working review process.

Out of scope

  • Fixing the templates themselves. Tracked in PSModule/Template-PSModule#40.
  • How PSModule propagates a template change to its repositories, which is that organization's mechanism.

Technical decisions

Open: where the artifact list lives. Either a standard page names its embodying artifacts directly, which keeps the two together but adds cross-repository paths to a page that otherwise avoids them, or the relationship lives in a single index of standard-to-artifact mappings, which centralises it at the cost of a second place to update. Resolve before implementation.

Open: what enforces it. Options range from a checklist item in the pull request gate, through a CODEOWNERS-style review trigger on standards pages, to an automated check that greps known artifact paths for a structural marker. The automated end is the only one that does not rely on the author remembering, which is the failure mode observed here.

Not a versioning problem. Version-stamping standards and having artifacts declare conformance would surface drift, but it adds ceremony to every standard to catch a case that a naming-plus-check approach catches more directly.

Scope of the term "artifact": files that mechanically embody a standard's structure — pull request and issue templates, bootstrap and scaffold files, linter configurations. Prose that merely describes a standard is out; the concern is a file a contributor fills in or a tool reads.


Implementation plan

  • Resolve the two open decisions and record them here
  • Identify the standards pages that prescribe a concrete artifact structure, and the artifacts each governs
  • Record the mapping in whichever location the first decision selects
  • Add the downstream-artifact check to the change process for standards pages
  • Confirm the PR Format to pull_request_template.md relationship is captured by the result
  • Cross-check the issue templates against Issue Format, which has the same exposure and has not been swept

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions