docs(governance): add Code of Conduct, reporting process, enforcement ladder and stale issue policy - #1738
Merged
RUKAYAT-CODER merged 1 commit intoSep 29, 2026
Conversation
…le issue policy Closes four governance gaps in the Governance/ folder. Governance/CODE_OF_CONDUCT.md (rinafcode#1591) CONTRIBUTING.md §1 carried the whole conduct standard in one paragraph, and COC_APPEALS.md §1 already referred to a Code of Conduct that did not exist as a document. States expected behaviour, unacceptable behaviour across harassment, privacy, abuse of position, bad faith and retaliation, and the scope boundary for off-project conduct. Includes an explicit "what is not a violation" section, because a Code of Conduct read as forbidding firm technical disagreement stops being used. Governance/COC_REPORTING.md (rinafcode#1593) The reporting channel, the response timeline with per-step deadlines, and the confidentiality guarantee stated with its limits. Covers reporting a maintainer or the project lead, anonymous reports and what they cost, and provisional protective measures that are explicitly not findings. Governance/COC_ENFORCEMENT.md (rinafcode#1592) A five-step ladder from private correction to permanent ban, each with its criteria, the authority required, and a stated duration. Records the aggravating and mitigating factors that select a step, and the expiry windows after which a prior sanction stops counting. A published scale is what makes COC_APPEALS.md §5.1 — appeal as "disproportionate" — mean anything. Governance/policies/STALE_ISSUES.md (rinafcode#1606) Staleness threshold, warning and closing steps, exemptions, and the reopen path. Uses 60 days to match processes/TRIAGE.md and the status: stale definition in LABEL_TAXONOMY.md, and explains why that differs from the 30 days STALE_PRS.md gives a pull request. Issues close as not planned, never as completed, and anyone may reopen by commenting. All four match the house style of their nearest neighbour and cross-link into the existing tree; all 86 relative links were checked to resolve. Documentation only, scoped entirely to Governance/, no code touched. Closes rinafcode#1591 Closes rinafcode#1592 Closes rinafcode#1593 Closes rinafcode#1606
|
@ThatCodeBabe Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
Thank you for contributing to the project |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1591
Closes #1592
Closes #1593
Closes #1606
Four governance gaps, one per issue, each a single new file inside
Governance/.Governance/CODE_OF_CONDUCT.mdGovernance/COC_REPORTING.mdGovernance/COC_ENFORCEMENT.mdGovernance/policies/STALE_ISSUES.mdCODE_OF_CONDUCT.md— #1591CONTRIBUTING.md§1 carried the entire conduct standard in one paragraph, andCOC_APPEALS.md§1 already referred to "the project's Code of Conduct" as though it were a document — it was not one. This is that document, andCONTRIBUTING.md§1 now reads as its summary.Beyond the required sections it adds an explicit "what is not a violation" table. A Code of Conduct that gets read as forbidding firm technical disagreement stops being used, so rejecting a PR, disagreeing with a maintainer in public, and closing an issue as out of scope are named as not violations. The distinction throughout is conduct toward people, not positions on technical questions.
The scope section also draws the off-project boundary deliberately: unrelated personal or political activity is out of scope, but harassment that follows someone out of the repository because of what happened in it is in scope, because its effect lands inside the project.
Adapted from Contributor Covenant 2.1, with the scope boundaries, the abuse-of-position and retaliation provisions, and the not-a-violation list added for this project.
COC_REPORTING.md— #1593The three required elements, plus the cases a reporting process actually fails on:
The confidentiality section commits to six specific things and then states the limits honestly — physical-safety risk and legal obligation — because a guarantee with unstated exceptions is worse than a narrower one.
The timeline is 2 business days to acknowledge, 5 to assign an unconflicted handler, 21 calendar days to decide, extendable once by 14 days with a stated reason. A deadline missed by the project never shortens the reporter's appeal window.
COC_ENFORCEMENT.md— #1592A five-step ladder, each step carrying its criteria, the authority required, and a stated duration:
Why a published scale matters here specifically:
COC_APPEALS.md§5.1 already lets a sanction be appealed as disproportionate, and that ground is unusable without a scale to measure against. This supplies it.§4 records what moves a response up or down — severity, repetition, ongoing risk, abuse of position, retaliation (step 4 minimum, because it attacks the reporting process everything else depends on), and impact on a newer contributor — along with the mitigating factors, and which conduct mitigation does not apply to. §6 sets expiry windows so a sanction stops counting toward escalation after a stated period.
policies/STALE_ISSUES.md— #1606Written as the counterpart to the existing
STALE_PRS.mdand in the same format.60 days, not 30.
processes/TRIAGE.mdand thestatus: staledefinition inLABEL_TAXONOMY.mdboth already say 60 for issues, whileSTALE_PRS.mduses 30 for pull requests. This policy keeps 60 and explains the difference rather than leaving it looking like an inconsistency: a PR rots on its own — the branch drifts, conflicts accumulate, review context fades — whereas a bug nobody has reached is still a bug after two months. The document notes that all three places must change together if the threshold is ever revised.Two choices worth a look:
priority: high/criticalout of auto-closure entirely, since sustained inactivity there is a triage failure rather than something closing the issue fixes.Scope and verification
Governance/.git statusshows four added files and nothing else.lint,format:checkand the jest suites all target.tsundersrc/,test/,apps/andlibs/; nothing in this PR is within their globs.COC_APPEALS.md,REVOCATION.md,QUORUM.md,TRANSPARENCY_REPORTS.md,LABEL_TAXONOMY.md,TRIAGE.mdandroles/MAINTAINER.md.COC_APPEALS.mdfor the three conduct documents,STALE_PRS.mdfor the stale issue policy.One note: the contact address in
COC_REPORTING.mdisconduct@teachlink.example, following the same placeholder convention assecurity@teachlink.exampleinSECURITY_POLICY.md, and flagged in the document for replacement with the real address. Happy to substitute it if you tell me what it should be.I kept
Governance/README.mduntouched: its index is already behind the folder's current contents, and updating it here would collide with other open governance PRs. It looks like it wants one PR of its own to resync — glad to do that separately if useful.