From 4efbf582a3ab7e3cd6c9aeaabd102cdd99a6f4eb Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 26 Jul 2026 14:53:06 +0100 Subject: [PATCH 1/4] chore: estate-wide security compliance --- .github/workflows/boj-build.yml | 1 + .github/workflows/codeql.yml | 1 + .github/workflows/dogfood-gate.yml | 1 + .github/workflows/governance.yml | 1 + .github/workflows/hypatia-scan.yml | 1 + .github/workflows/instant-sync.yml | 1 + .github/workflows/mirror.yml | 1 + .github/workflows/push-email-notify.yml | 1 + .github/workflows/release.yml | 1 + .github/workflows/rhodibot.yml | 1 + .github/workflows/scorecard.yml | 1 + .github/workflows/secret-scanner.yml | 1 + .github/workflows/static-analysis-gate.yml | 1 + CODE_OF_CONDUCT.md | 327 +++++++++++++++++++++ 14 files changed, 340 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index f886cd9..d70936f 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -16,6 +16,7 @@ jobs: curl -X POST "http://boj-server.local:7700/cartridges/ssg-mcp/invoke" -H "Content-Type: application/json" -d "{\"repo\": \"${{ github.repository }}\", \"branch\": \"${{ github.ref_name }}\", \"engine\": \"casket\\"}"} continue-on-error: true permissions: read-all + actions: read - name: K9-SVC Validation run: | diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c475caf..7282f84 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -18,6 +18,7 @@ concurrency: cancel-in-progress: true permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index b0ef40e..4940ed2 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -13,6 +13,7 @@ on: branches: [main, master] permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index 62bbc98..906741d 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -27,6 +27,7 @@ concurrency: cancel-in-progress: true permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 2e7e939..013c95a 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -19,6 +19,7 @@ concurrency: cancel-in-progress: true permissions: + actions: read contents: read security-events: write pull-requests: write diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 228dc43..0f86f6c 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -9,6 +9,7 @@ on: types: [published] permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index 81e9903..c25d3bc 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -7,6 +7,7 @@ on: workflow_dispatch: permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml index 4b4e754..112afd1 100644 --- a/.github/workflows/push-email-notify.yml +++ b/.github/workflows/push-email-notify.yml @@ -7,6 +7,7 @@ name: Push email notification on: push: {} permissions: + actions: read contents: read jobs: notify: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e840456..fe58ec3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,7 @@ on: - 'v*' permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/rhodibot.yml b/.github/workflows/rhodibot.yml index a82f178..3ed59b5 100644 --- a/.github/workflows/rhodibot.yml +++ b/.github/workflows/rhodibot.yml @@ -21,6 +21,7 @@ on: types: [completed] permissions: + actions: read contents: write pull-requests: write diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 64ac2ac..f0c8699 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -9,6 +9,7 @@ on: branches: [main] permissions: read-all + actions: read jobs: analysis: diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index b3486fc..4839d60 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -11,6 +11,7 @@ concurrency: cancel-in-progress: true permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/static-analysis-gate.yml b/.github/workflows/static-analysis-gate.yml index 3c3328d..c24ef0c 100644 --- a/.github/workflows/static-analysis-gate.yml +++ b/.github/workflows/static-analysis-gate.yml @@ -10,6 +10,7 @@ on: branches: [main, master] permissions: + actions: read contents: read jobs: diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..8267cd4 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,327 @@ +# Code of Conduct + + + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in Squisher Corpus a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +We recognise that a thriving open source community requires **psychological safety** — an environment where people can contribute, ask questions, make mistakes, and learn without fear of ridicule or retaliation. + +--- + +## Our Standards + +### Expected Behaviour + +The following behaviours contribute to a positive environment: + +**Communication** +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Giving and gracefully accepting constructive feedback +- Assuming good intent while addressing impact +- Communicating clearly and patiently, especially with newcomers + +**Collaboration** +- Focusing on what is best for the community +- Showing empathy and kindness toward other community members +- Being collaborative rather than competitive +- Mentoring and supporting less experienced contributors +- Celebrating others' contributions and successes + +**Professionalism** +- Accepting responsibility and apologising to those affected by our mistakes +- Learning from the experience and avoiding repetition +- Respecting others' time and attention +- Staying on topic in project spaces +- Following project guidelines and conventions + +**Accessibility** +- Using plain language and avoiding unnecessary jargon +- Providing alt text for images and transcripts for audio/video +- Being patient with those using assistive technologies +- Accommodating different communication styles and needs +- Recognising that not everyone communicates the same way + +### Unacceptable Behaviour + +The following behaviours are considered harassment and are unacceptable: + +**Harassment** +- The use of sexualised language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Deliberate intimidation, stalking, or following (online or in-person) +- Unwelcome physical contact or simulated physical contact (e.g., emoji) +- Sustained disruption of talks, events, or online discussions + +**Discrimination** +- Discriminatory jokes and language +- Posting or threatening to post others' personally identifying information ("doxing") +- Advocating for, or encouraging, any of the above behaviour +- Microaggressions — subtle, often unintentional, discriminatory comments or actions + +**Professional Misconduct** +- Publishing others' private information without explicit permission +- Misrepresenting affiliation or contributions +- Plagiarism or claiming credit for others' work +- Retaliating against anyone who reports a Code of Conduct violation +- Other conduct which could reasonably be considered inappropriate in a professional setting + +### Grey Areas + +Some situations require judgement. When uncertain: + +- **Intent vs Impact**: Good intentions do not excuse harmful impact. Focus on making things right. +- **Power Dynamics**: Those with more power (maintainers, employers, experienced contributors) must be especially mindful of their impact. +- **Cultural Differences**: What's acceptable varies by culture. When in doubt, err on the side of caution and ask. +- **Humour**: Jokes at others' expense are rarely funny to everyone. Punch up, not down. + +--- + +## Scope + +This Code of Conduct applies within all community spaces, including: + +**Online Spaces** +- Repository discussions, issues, and pull/merge requests +- Project chat channels (Matrix, Discord, Slack, IRC) +- Mailing lists and forums +- Social media when representing the project +- Video calls and virtual meetings + +**In-Person Spaces** +- Conferences, meetups, and events +- Workshops and training sessions +- Any gathering where you represent the project + +**Representation** +This Code of Conduct also applies when an individual is officially representing the community in public spaces. Examples include: + +- Using an official project email address +- Posting via an official social media account +- Acting as an appointed representative at an event +- Speaking on behalf of the project + +--- + +## Enforcement + +### Reporting + +If you experience or witness unacceptable behaviour, or have any other concerns, please report it as soon as possible. + +**How to Report** + +| Method | Details | Best For | +|--------|---------|----------| +| **Email** | j.d.a.jewell@open.ac.uk | Detailed reports, sensitive matters | +| **Private Message** | Contact any maintainer directly | Quick questions, minor issues | +| **Anonymous Form** | [Link to form if available] | When you need anonymity | + +**What to Include** + +- Your contact information (unless anonymous) +- Names/usernames of those involved +- Description of what happened +- When and where it occurred +- Any witnesses +- Any supporting evidence (screenshots, links) +- How you would like us to respond (if you have a preference) + +**What Happens Next** + +1. You will receive acknowledgment within **48 hours** +2. The maintainers will review the report +3. We may ask for additional information +4. We will determine appropriate action +5. We will inform you of the outcome (respecting others' privacy) + +### Confidentiality + +All reports will be handled with discretion: + +- Reporter identity is protected by default +- Details are shared only with those who need to know +- We will ask before naming you in any communication +- Anonymous reports are accepted and investigated + +### Conflicts of Interest + +If a maintainers member is involved in an incident: + +- They will recuse themselves from the process +- Another maintainer or external party will handle the report +- We will disclose any potential conflicts + +--- + +## Enforcement Guidelines + +The maintainers will follow these guidelines in determining consequences: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome. + +**Consequence**: A private, written warning providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested. + +**Duration**: Immediate + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +**Duration**: 1-4 weeks + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behaviour. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +**Duration**: 1-6 months + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +**Duration**: Permanent (with appeal rights after 12 months) + +### Enforcement Across Perimeters + +For contributors with elevated access (Perimeter 2 or 1): + +| Level | Additional Consequence | +|-------|----------------------| +| Correction | Noted in contributor record | +| Warning | Access privileges may be temporarily reduced | +| Temporary Ban | Access reduced to Perimeter 3 for ban duration | +| Permanent Ban | All access revoked | + +--- + +## Appeals + +If you believe an enforcement decision was made in error: + +1. **Wait 7 days** after the decision (cooling-off period) +2. **Email** j.d.a.jewell@open.ac.uk with subject line "Appeal: [Original Report ID]" +3. **Explain** why you believe the decision should be reconsidered +4. **Provide** any new information not previously available + +**Appeals Process** + +- Appeals are reviewed by a different maintainers member than the original +- You will receive a response within 14 days +- The appeals decision is final +- You may only appeal once per incident + +**Grounds for Appeal** + +- Procedural errors in the original investigation +- New evidence not previously available +- Disproportionate response to the violation +- Misunderstanding of facts + +--- + +## Supporting Those Who Report + +We are committed to supporting those who report violations: + +**We Will** +- Believe and take all reports seriously +- Respect your privacy and confidentiality preferences +- Keep you informed of progress (if you wish) +- Take steps to protect you from retaliation +- Provide resources if you need support + +**We Will Not** +- Require you to confront the person directly +- Dismiss reports without investigation +- Reveal your identity without consent +- Tolerate retaliation against reporters +- Rush you to make decisions + +--- + +## Prevention + +Beyond enforcement, we actively work to prevent issues: + +**Onboarding** +- All contributors are expected to read this Code of Conduct +- Perimeter 2 applicants must confirm they've read and understood it +- Maintainers receive additional training on enforcement + +**Culture** +- We model the behaviour we expect +- We intervene early when we see potential issues +- We thank people for positive contributions +- We create opportunities for diverse voices + +**Review** +- This Code of Conduct is reviewed annually +- Community feedback is welcomed +- Changes are communicated clearly + +--- + +## Acknowledgments + +This Code of Conduct is adapted from: + +- [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1 +- [Django Code of Conduct](https://www.djangoproject.com/conduct/) +- [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct) +- [Python Community Code of Conduct](https://www.python.org/psf/conduct/) + +We thank these communities for their leadership in creating welcoming spaces. + +--- + +## Questions? + +If you have questions about this Code of Conduct: + +- Open a [Discussion](https://github.com/hyperpolymath/squisher-corpus/discussions) (for general questions) +- Email j.d.a.jewell@open.ac.uk (for private questions) +- Contact any maintainer directly + +--- + +## Summary + +**Be kind. Be respectful. Be collaborative.** + +We're all here because we care about this project. Let's make it a place where everyone can do their best work. + +--- + +Last updated: 2026 · Based on Contributor Covenant 2.1 From ef60eafe722902783351ffae01c6745daabb8bc3 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 26 Jul 2026 15:11:51 +0100 Subject: [PATCH 2/4] chore: remove duplicate GOVERNANCE files, keep GOVERNANCE.md --- .github/GOVERNANCE.md | 158 ------------------------------------------ 1 file changed, 158 deletions(-) delete mode 100644 .github/GOVERNANCE.md diff --git a/.github/GOVERNANCE.md b/.github/GOVERNANCE.md deleted file mode 100644 index 58e3298..0000000 --- a/.github/GOVERNANCE.md +++ /dev/null @@ -1,158 +0,0 @@ - - -# Project Governance - -This document describes the governance model for **Session Sentinel**. - ---- - -## Project Governance Model - -Session Sentinel follows a **Benevolent Dictator For Life (BDFL)** governance model. -This model is well-suited for solo maintainers and small project teams where rapid, -consistent decision-making is more valuable than formal consensus processes. - -The BDFL has final authority on all project decisions, including technical direction, -release schedules, contributor access, and community standards. - -> **Transition clause:** When the core team exceeds three active maintainers, this -> project should transition to a **consensus-based governance model** with documented -> voting procedures. That transition should itself be recorded as an Architecture -> Decision Record (ADR) in `docs/decisions/`. - ---- - -## Decision Making - -### Day-to-day decisions - -- The BDFL makes final decisions on all matters. -- Routine decisions (bug fixes, dependency updates, minor improvements) may be made - by any maintainer with commit access. -- Maintainers are expected to use good judgement and seek input on non-trivial changes. - -### Proposing changes - -- Contributors can propose changes by opening issues or pull requests. -- Significant changes (new features, breaking changes, architectural shifts) should - be discussed in an issue before implementation begins. -- The BDFL will provide a clear accept/reject decision with reasoning. - -### Architecture Decision Records (ADRs) - -- Significant technical decisions are documented as ADRs in `docs/decisions/`. -- ADR statuses: `proposed`, `accepted`, `deprecated`, `superseded`, `rejected`. -- ADRs provide a historical record of why decisions were made and what alternatives - were considered. -- See `.machine_readable/META.a2ml` for the machine-readable ADR index. - ---- - -## Roles - -### BDFL (Benevolent Dictator For Life) - -- The project creator and ultimate decision-maker. -- Sets the project's technical direction and long-term vision. -- Has final say on all matters, including maintainer appointments and removals. -- Responsible for ensuring the project adheres to RSR standards. - -### Maintainer - -- Has commit access to the repository. -- Reviews and merges pull requests. -- Triages issues and manages releases. -- Upholds code quality, security standards, and the Code of Conduct. -- Listed in [MAINTAINERS.md](MAINTAINERS.md). - -### Contributor - -- Anyone who submits pull requests, opens issues, or participates in discussions. -- Does not have direct commit access. -- Contributions are reviewed by maintainers before merging. -- All contributors must follow the [Code of Conduct](CODE_OF_CONDUCT.md). - -### Bot - -- Automated agents managed via your bot orchestration system. -- Perform automated code review, security scanning, dependency updates, and - standards enforcement. -- Bot actions are subject to the same quality and review standards as human - contributions. -- Configure your bots in `.machine_readable/bot_directives/`. - ---- - -## Becoming a Maintainer - -A contributor may be nominated to become a maintainer when they demonstrate: - -1. **Sustained quality contributions** -- a track record of well-crafted pull requests - that follow project conventions and require minimal revision. -2. **Understanding of RSR standards** -- familiarity with the Repository Structure - Requirements, security policies, and CI/CD workflows used across the project. -3. **Constructive participation** -- helpful issue triage, thoughtful code review - comments, and mentoring of other contributors. -4. **Reliability** -- consistent engagement over a meaningful period (typically 3+ - months of active contribution). - -### Process - -1. An existing maintainer nominates the candidate by opening a private discussion - with the BDFL. -2. The BDFL reviews the candidate's contribution history and community interactions. -3. The BDFL approves or declines the nomination, with reasoning provided to the - nominator. -4. If approved, the new maintainer is added to [MAINTAINERS.md](MAINTAINERS.md) and - granted appropriate repository access. - ---- - -## Removing a Maintainer - -A maintainer may be removed under the following circumstances: - -- **Inactivity**: No meaningful contributions or reviews for 12 or more consecutive - months. The maintainer will be contacted before removal and offered the option to - move to emeritus status voluntarily. -- **Code of Conduct violation**: Behaviour that violates the - [Code of Conduct](CODE_OF_CONDUCT.md), as determined through the enforcement - process described therein. -- **BDFL discretion**: The BDFL may remove a maintainer for other reasons (e.g., - repeated disregard for project standards, loss of trust). Reasoning will be - documented privately. - -Removed maintainers are moved to the Emeritus section of -[MAINTAINERS.md](MAINTAINERS.md) unless removal was due to a serious Code of Conduct -violation. - ---- - -## Code of Conduct - -All participants in this project are expected to follow the -[Code of Conduct](CODE_OF_CONDUCT.md). The Code of Conduct applies to all project -spaces, including issues, pull requests, discussions, and any forum where the project -is represented. - -Enforcement of the Code of Conduct is described in that document. The BDFL serves as -the final arbiter in conduct disputes. - ---- - -## Amendments - -This governance document may be amended by the BDFL at any time. All amendments will -be: - -1. Documented as an ADR in `docs/decisions/` explaining the rationale for the change. -2. Committed to the repository with a clear commit message. -3. Communicated to existing maintainers and contributors via the project's usual - channels. - -Substantive changes (e.g., changing the governance model itself) should be discussed -with the community before adoption, even though the BDFL retains final authority. - ---- - -Copyright (c) 2026 hyperpolymath. Licensed under MPL-2.0. From 83f5e424bb35de0261b84af93cbfa5bd0191430a Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:02:05 +0100 Subject: [PATCH 3/4] chore: update guix.scm from squisher-corpus --- guix.scm | 75 +++++++++----------------------------------------------- 1 file changed, 11 insertions(+), 64 deletions(-) diff --git a/guix.scm b/guix.scm index 3a14724..c6dd7be 100644 --- a/guix.scm +++ b/guix.scm @@ -1,71 +1,18 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -;; -;; Guix package definition for Session Sentinel -;; -;; Usage: -;; guix shell -D -f guix.scm # Enter development shell -;; guix build -f guix.scm # Build package -;; -;; TODO: Replace Session Sentinel and customize inputs for your language/stack. -;; See: https://guix.gnu.org/manual/en/html_node/Defining-Packages.html +; SPDX-License-Identifier: MPL-2.0 +;; guix.scm — GNU Guix package definition for squisher-corpus +;; Usage: guix shell -f guix.scm (use-modules (guix packages) - (guix gexp) - (guix git-download) (guix build-system gnu) - (guix licenses) - (gnu packages base)) + (guix licenses)) (package - (name "Session Sentinel") + (name "squisher-corpus") (version "0.1.0") - (source (local-file "." "source" - #:recursive? #t - #:select? (lambda (file stat) - (not (string-contains file ".git"))))) + (source #f) (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; TODO: Customize build phases for your project - ;; Examples for common stacks: - ;; - ;; Rust: - ;; (replace 'build (lambda _ (invoke "cargo" "build" "--release"))) - ;; (replace 'check (lambda _ (invoke "cargo" "test"))) - ;; - ;; Elixir: - ;; (replace 'build (lambda _ (invoke "mix" "compile"))) - ;; (replace 'check (lambda _ (invoke "mix" "test"))) - ;; - ;; Zig: - ;; (replace 'build (lambda _ (invoke "zig" "build"))) - ;; (replace 'check (lambda _ (invoke "zig" "build" "test"))) - (delete 'configure) - (delete 'build) - (delete 'check) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/share/doc")) - (copy-file "README.adoc" - (string-append out "/share/doc/README.adoc")))))))) - (native-inputs - (list - ;; TODO: Add build-time dependencies - ;; Examples: - ;; rust (gnu packages rust) - ;; elixir (gnu packages elixir) - ;; zig (gnu packages zig) - )) - (inputs - (list - ;; TODO: Add runtime dependencies - )) - (home-page "https://github.com/hyperpolymath/Session Sentinel") - (synopsis "Multi-AI session health monitor with system tray, self-healing, and PanLL panel") - (description "RSR-compliant project. See README.adoc for details.") - (license (list - ;; MPL-2.0 extends MPL-2.0 - mpl2.0))) + (synopsis "squisher-corpus") + (description "squisher-corpus — part of the hyperpolymath ecosystem.") + (home-page "https://github.com/hyperpolymath/squisher-corpus") + (license ((@@ (guix licenses) license) "PMPL-1.0-or-later" + "https://github.com/hyperpolymath/palimpsest-license"))) From 57156d96e7a65fa3d0ded6046f6b69ffc4d07c1c Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 28 Jul 2026 06:23:52 +0100 Subject: [PATCH 4/4] chore: fill or remove RSR template placeholders openssf-compliance.yml fails when any of the thirteen files it checks still contains a {{PLACEHOLDER}} token. This clears them. Three kinds of change, no invention: The "TEMPLATE INSTRUCTIONS (delete this block before publishing)" comment is deleted. The template says to delete it, and it is where every legend line lives -- so a large share of the reported tokens were the file documenting its own placeholders, not real unfilled fields. Tokens derivable from the repository are filled: owner and repo from the git remote, project name, year, forge, main branch, contact email. PGP and website lines are removed rather than filled, because nothing true could go in them. https://github.com/.gpg returns HTTP 200 for every account; with no key uploaded the body is a stub reading "This user hasnt uploaded any GPG keys". No key is published for either account here, and commit signing in this estate is SSH, which is unrelated. Only one repository in the estate has a domain, so {{WEBSITE}} likewise has no correct value. The template sanctions this: "Optional: Remove sections that dont apply (e.g. PGP if you dont use it)." A security policy telling a researcher to encrypt to a key that does not exist is worse than one that does not mention encryption. Co-Authored-By: Claude Opus 5 Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> --- .github/SECURITY.md | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/.github/SECURITY.md b/.github/SECURITY.md index fcaa841..0c679f4 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -1,23 +1,5 @@ # Security Policy - - We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions. ## Table of Contents @@ -59,19 +41,7 @@ If you cannot use GitHub Security Advisories, you may email us directly: | | | |---|---| | **Email** | j.d.a.jewell@open.ac.uk | -| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) | -| **Fingerprint** | `{{PGP_FINGERPRINT}}` | - -```bash -# Import our PGP key -curl -sSL {{PGP_KEY_URL}} | gpg --import -# Verify fingerprint -gpg --fingerprint j.d.a.jewell@open.ac.uk - -# Encrypt your report -gpg --armor --encrypt --recipient j.d.a.jewell@open.ac.uk report.txt -``` > **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media. @@ -370,7 +340,6 @@ When using Session Sentinel, we recommend: ## Additional Resources -- [Our PGP Public Key]({{PGP_KEY_URL}}) - [Security Advisories](https://github.com/hyperpolymath/session-sentinel/security/advisories) - [Changelog](CHANGELOG.md) - [Contributing Guidelines](CONTRIBUTING.md)