-
Notifications
You must be signed in to change notification settings - Fork 1
docs: add the modification process and contributor intake #136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| # SPDX-FileCopyrightText: 2026 Polymath Robotics, Inc. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
| * @iliabaranov @rajasimman-madhivanan @davidt315 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,130 @@ | ||
| --- | ||
| name: Change Request | ||
| description: Request an assessed change to Protective Stop | ||
| title: '[CR] ' | ||
| labels: [change-request, status:proposed] | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 (optional) Maintainers get Change Requests silently missing their tracking labels if the first CR is filed before an admin manually runs the label sync script. GitHub issue forms only apply labels listed in Extended reasoning...This PR ships .github/ISSUE_TEMPLATE/change-request.yml with labels: [change-request, status:proposed] at line 5. Those two labels, plus 14 others, are defined only in tools/change_control/labels.json and created in the live repo by running scripts/sync_labels.sh. Grep of .github/workflows shows no workflow references sync_labels.sh; it is a manual script gated on 'an authorized repository administrator' per its own header comment. Sequence: PR merges, issue form becomes selectable immediately, but if no admin has yet run scripts/sync_labels.sh (there is no ordering enforcement or reminder anywhere in this diff), a contributor opens a Change Request. GitHub issue forms apply labels from the labels: key only if the named label already exists in the repository; if it does not exist, the label is silently dropped, not created, and the issue is filed with no label at all. That issue is now indistinguishable from a random issue under MODIFICATION_PROCEDURE.md:28's definition ('A GitHub Issue carrying the change-request label. The single entry point for all changes in scope.'), and it will… Verification: Severity: nit. The mechanism is real and reachable. The issue form declares |
||
| body: | ||
| - type: textarea | ||
| id: reason | ||
| attributes: | ||
| label: Reason for the change | ||
| description: Why this change is needed. A defect, a new requirement, a dependency update, a corrective action. Link to the source if there is one. | ||
| placeholder: State the reason and source. | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: hazards | ||
| attributes: | ||
| label: Hazards that may be affected | ||
| description: Which identified hazards this change could bear on. Reference the HARA entries. "None identified, because…" is a valid answer; blank is not. | ||
| placeholder: None identified, because… | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: description | ||
| attributes: | ||
| label: Description of the proposed change | ||
| description: What specifically is proposed, covering both hardware and software. Enough detail that someone other than the requester can assess it. | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: baseline | ||
| attributes: | ||
| label: Baseline affected | ||
| description: Firmware, host and hardware versions. | ||
| validations: | ||
| required: true | ||
| - type: input | ||
| id: requester | ||
| attributes: | ||
| label: Requester | ||
| description: Name and date. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: impact-analysis | ||
| attributes: | ||
| label: Impact Analysis | ||
| description: Link to or paste the completed Impact Analysis. Required before authorization. | ||
| validations: | ||
| required: false | ||
| - type: dropdown | ||
| id: class | ||
| attributes: | ||
| label: Proposed class | ||
| description: The Impact Analyst proposes and the Authorizer confirms the class. | ||
| options: | ||
| - A | ||
| - B | ||
| - C | ||
| default: 2 | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: authorization | ||
| attributes: | ||
| label: Authorization | ||
| description: Authorizer, decision, date and basis. Class C requires two distinct Authorizers. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: implementation | ||
| attributes: | ||
| label: Implementation | ||
| description: Implementer; competency basis; pull requests covering software, hardware and tests; documentation updated; and upstream pstop_c change required - Yes / No, with link. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: gate-0 | ||
| attributes: | ||
| label: Gate 0 - Build Acceptance Test | ||
| description: Version under test, CI run, date and result. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: gate-1 | ||
| attributes: | ||
| label: Gate 1 - Merge qualification | ||
| description: Scope per the change class and Impact Analysis. Record test, version under test, Run by, date and result. For Class C record Forward - affected safety requirements to verification performed; Backward - verification performed to requirements | ||
| covered. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: review | ||
| attributes: | ||
| label: Review | ||
| description: Reviewer, who is not the Implementer; pull request review link; date; and outcome. | ||
| validations: | ||
| required: false | ||
| - type: textarea | ||
| id: deviations | ||
| attributes: | ||
| label: Deviations | ||
| description: Any deviation from this procedure, with justification. Includes the case where the Authorizer and Implementer are the same person. | ||
| validations: | ||
| required: false | ||
| - type: input | ||
| id: release | ||
| attributes: | ||
| label: Release Record | ||
| description: Release is handled separately in the Release Record. Record only the link here once this change ships. | ||
| validations: | ||
| required: false | ||
| - type: dropdown | ||
| id: status | ||
| attributes: | ||
| label: Status | ||
| description: Current Change Request lifecycle status. | ||
| options: | ||
| - Proposed | ||
| - Under Analysis | ||
| - Authorized | ||
| - Rejected | ||
| - In Implementation | ||
| - In Verification | ||
| - Merged | ||
| - Released | ||
| - Closed | ||
| default: 0 | ||
| validations: | ||
| required: false | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| blank_issues_enabled: true | ||
| contact_links: | ||
| - name: Private safety and security reports | ||
| url: https://github.com/polymathrobotics/protective-stop/security/policy | ||
| about: Read SECURITY.md and report suspected safety or security defects privately. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| ## Change control | ||
|
|
||
| - Change Request: Closes #NN or Refs #NN | ||
| - Class: A / B / C | ||
| - Impact Analysis: link | ||
|
|
||
| ## Completion | ||
|
|
||
| - [ ] Authorization preceded implementation | ||
| - [ ] Named tests and affected interfaces were exercised | ||
| - [ ] Documentation identified by the Impact Analysis is updated | ||
| - [ ] Review is by someone other than the implementer | ||
| - [ ] Gate evidence is attached to the Change Request |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
likely we can define these in github if this is for later automation / reference by scripts