Skip to content

CMP-1: Semantic change PR checklist #205

@rororowyourboat

Description

@rororowyourboat

Summary

Every PR that changes semantics (canonical fields, role constraints, execution contracts, verification checks, cross-layer boundaries) should answer a standardized checklist. This prevents semantic drift between prose, math, code, and tests (mitigates RA-2).

Checklist template

Every semantic PR must answer:

  1. What claim changes? — which invariant, property, or semantic contract is affected
  2. Where is it formally stated? — link to check-specifications.md, design doc, or docstring
  3. What code enforces or computes it? — module + function/class
  4. What tests trace to it? — test file + @pytest.mark.requirement() marker
  5. What examples demonstrate it? — which exemplar model exercises the changed behavior
  6. What migration impact? — do existing DSLs, specs, or downstream consumers break

Implementation options

Option A: PR template.github/PULL_REQUEST_TEMPLATE/semantic.md with the checklist as a markdown checkbox list. Contributors select this template for semantic PRs.

Option B: CI label check — when a PR carries a semantic label, a CI step verifies all checklist items are addressed in the PR body (lightweight regex check).

Option C: Just document it — add the checklist to CONTRIBUTING.md and rely on review discipline.

Acceptance criteria

  • Checklist is documented somewhere contributors will see it (PR template, CONTRIBUTING.md, or both)
  • At least one merged PR has used the checklist as a dry run

Source

Cross-cutting mitigation program CMP-1 from improvement-plans/gds_core_risk_register_and_doctrines.md. Mitigates risks RA-1 (verification language outruns guarantees) and RA-2 (semantic drift).

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationtier-1Tier 1: High Priority

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions