From e1d6c86cd848a17617764191db1a60de9afc766a Mon Sep 17 00:00:00 2001 From: Jay Kim Date: Sat, 1 Aug 2026 20:12:02 +0900 Subject: [PATCH] Harden organization repository surface --- .github/CODEOWNERS | 6 + .github/ISSUE_TEMPLATE/config.yml | 8 + .github/ISSUE_TEMPLATE/documentation.yml | 46 +++++ .github/ISSUE_TEMPLATE/repository-surface.yml | 60 +++++++ .github/PULL_REQUEST_TEMPLATE.md | 26 +++ .github/dependabot.yml | 12 ++ .github/workflows/repository-health.yml | 29 ++++ CODE_OF_CONDUCT.md | 43 +++++ CONTRIBUTING.md | 51 ++++++ GOVERNANCE.md | 56 ++++++ LICENSE | 29 ++++ README.md | 61 +++++++ SECURITY.md | 42 +++++ SUPPORT.md | 24 +++ profile/assets/oraclizer-social-preview.png | Bin 0 -> 83546 bytes profile/assets/oraclizer-social-preview.svg | 47 +++++ scripts/verify-profile.mjs | 163 ++++++++++++++++++ 17 files changed, 703 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/documentation.yml create mode 100644 .github/ISSUE_TEMPLATE/repository-surface.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/repository-health.yml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 GOVERNANCE.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 SECURITY.md create mode 100644 SUPPORT.md create mode 100644 profile/assets/oraclizer-social-preview.png create mode 100644 profile/assets/oraclizer-social-preview.svg create mode 100644 scripts/verify-profile.mjs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..d8477b7 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,6 @@ +# Public profile, policy, automation, and metadata ownership +* @jay-oraclizer + +/profile/ @jay-oraclizer +/.github/ @jay-oraclizer +/scripts/ @jay-oraclizer diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..cfb832c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Security vulnerability + url: https://github.com/Oraclizer/.github/blob/main/SECURITY.md + about: Use the affected repository's private vulnerability-reporting path. + - name: Support boundary + url: https://github.com/Oraclizer/.github/blob/main/SUPPORT.md + about: Review supported and unsupported request channels. diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 0000000..06f37db --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,46 @@ +name: Documentation correction +description: Report a public documentation, link, accessibility, or rendering defect. +title: "[Docs]: " +labels: + - documentation +body: + - type: markdown + attributes: + value: | + Thank you for helping improve Oraclizer's public documentation. Do not include sensitive security details or private repository content. + - type: input + id: repository + attributes: + label: Repository or public page + description: Identify the affected repository or URL. + placeholder: Oraclizer/.github or https://github.com/Oraclizer + validations: + required: true + - type: input + id: location + attributes: + label: Exact location + description: Provide the file, section, anchor, or rendered element. + validations: + required: true + - type: textarea + id: problem + attributes: + label: Problem + description: Explain what is inaccurate, inaccessible, broken, or unclear. + validations: + required: true + - type: textarea + id: correction + attributes: + label: Proposed correction + description: Suggest precise replacement text or behavior if possible. + validations: + required: false + - type: checkboxes + id: safety + attributes: + label: Public-report confirmation + options: + - label: This report contains no vulnerability details, credentials, personal data, private links, or confidential material. + required: true diff --git a/.github/ISSUE_TEMPLATE/repository-surface.yml b/.github/ISSUE_TEMPLATE/repository-surface.yml new file mode 100644 index 0000000..fc24b37 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/repository-surface.yml @@ -0,0 +1,60 @@ +name: Repository surface defect +description: Report a metadata, status, navigation, Community Profile, or repository-setting defect. +title: "[Surface]: " +labels: + - repository-surface +body: + - type: markdown + attributes: + value: | + Use this form for non-sensitive public repository-surface problems. Security reports belong in the private path described by SECURITY.md. + - type: input + id: repository + attributes: + label: Affected repository + placeholder: Oraclizer/.github + validations: + required: true + - type: dropdown + id: surface + attributes: + label: Surface + options: + - About or Topics + - Organization profile + - Community Profile + - Issue or Pull Request template + - Workflow or status check + - Branch or merge setting + - Social preview + - Other public metadata + validations: + required: true + - type: textarea + id: observed + attributes: + label: Observed state + description: Include the public URL and exact current behavior. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected state + description: Describe the accurate or intended public behavior. + validations: + required: true + - type: textarea + id: evidence + attributes: + label: Evidence + description: Add non-sensitive screenshots, response codes, or references. + validations: + required: false + - type: checkboxes + id: safety + attributes: + label: Public-report confirmation + options: + - label: This report is non-sensitive and contains no credentials, private repository content, or uncoordinated vulnerability information. + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..d0ba5f4 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +## Summary + +Describe the smallest reviewable change and link the issue when applicable. + +## Public-surface impact + +- [ ] Organization profile or navigation +- [ ] Repository metadata or social preview +- [ ] Community-health default or contribution route +- [ ] Workflow, ruleset, or repository setting +- [ ] No protocol, proof, implementation, audit, release, or deployment claim changes + +Explain any affected status or assurance boundary: + +## Verification + +- [ ] `node scripts/verify-profile.mjs` +- [ ] `git diff --check` +- [ ] Changed links resolve or an automated-access limitation is recorded +- [ ] Desktop and mobile rendering checked when profile markup or assets change +- [ ] No credentials, private links, internal planning data, or machine-local paths + +## Reviewer focus + +Identify the wording, status boundary, rendering detail, or repository setting +that deserves the closest review. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a9bb5ce --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + open-pull-requests-limit: 5 + labels: + - dependencies + - github-actions + commit-message: + prefix: chore(actions) diff --git a/.github/workflows/repository-health.yml b/.github/workflows/repository-health.yml new file mode 100644 index 0000000..67d7bff --- /dev/null +++ b/.github/workflows/repository-health.yml @@ -0,0 +1,29 @@ +name: Repository health + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: repository-health-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + profile-health: + name: Profile health + runs-on: ubuntu-24.04 + timeout-minutes: 5 + steps: + - name: Check out repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Verify public repository surface + run: node scripts/verify-profile.mjs diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f7dfa84 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,43 @@ +# Code of Conduct + +## Our commitment + +Oraclizer is committed to a respectful, harassment-free environment for +technical, academic, standards, and community participation. + +## Expected behavior + +- Challenge claims, proofs, assumptions, and designs with technical specificity. +- Distinguish people from the work under review. +- Accept correction and take responsibility for mistakes. +- Respect disclosure, confidentiality, attribution, and citation boundaries. +- Use inclusive language and make participation accessible where practical. +- Focus discussion on rigorous, reproducible, and constructive outcomes. + +## Unacceptable behavior + +- Harassment, threats, insults, discriminatory comments, or sexualized conduct. +- Trolling, sustained disruption, or bad-faith misrepresentation. +- Publishing private information or vulnerability details without permission. +- Retaliation against a good-faith counterexample or security report. +- Plagiarism, fabricated evidence, or deliberate removal of attribution. + +## Enforcement + +Report conduct concerns privately to `jay@oraclizer.io` with the subject +`ORACLIZER CONDUCT`. Reports will be handled as confidentially as reasonably +possible. Maintainers may edit or remove content, close or lock interactions, +reject contributions, or restrict participation. + +Enforcement should be proportionate and separate from whether a participant's +technical criticism is correct. + +## Scope + +This policy applies in Oraclizer-managed repository spaces and when someone +officially represents Oraclizer in public. It does not govern independent +academic, technical, or standards criticism made without project +representation. + +This policy is adapted from the Contributor Covenant, version 2.1: +https://www.contributor-covenant.org/version/2/1/code_of_conduct.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5d5fdc8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Contributing + +This file provides fallback contribution guidance for Oraclizer repositories +that do not define their own `CONTRIBUTING.md`. Repository-specific guidance +and licenses take precedence. + +## Choose the right channel + +| Contribution | Channel | +| --- | --- | +| Broken link, rendering defect, accessibility problem, or documentation correction | Documentation issue form | +| Repository metadata, public-status, or navigation defect | Repository-surface issue form | +| Material protocol, proof, architecture, or public-claim change | Issue first, before a Pull Request | +| Sensitive or potentially exploitable concern | Private path in `SECURITY.md` | +| Usage or support request | Boundary and routing in `SUPPORT.md` | + +Search existing issues before opening a new one. Keep each issue or Pull +Request to one reviewable concern. + +## Pull Request expectations + +A Pull Request should: + +- explain what changed, why it changed, and which public surface is affected; +- link the review issue when the change is material or claim-affecting; +- distinguish research, specification, implementation, audit, release, and + deployment status; +- include the smallest relevant verification result; +- preserve accessibility, relative links, and responsive rendering; +- contain no credentials, private correspondence, internal planning data, + machine-local paths, generated logs, or unrelated artifacts; +- use the private reporting path for sensitive concerns. + +For this `.github` repository, run: + +```bash +node scripts/verify-profile.mjs +``` + +The check validates repository structure and public-surface invariants. It is +not a substitute for proof, code, deployment, security, or legal review. + +## Contribution rights + +By contributing to this `.github` repository, you represent that you have the +right to submit the material and agree that it may be distributed under the +BSD 3-Clause License. Contributions to another Oraclizer repository remain +subject to that repository's license and contribution policy. + +Opening an issue or Pull Request creates no obligation to accept, merge, +publish, release, or respond within a particular period. diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 0000000..cdb5e7b --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,56 @@ +# Governance + +This document governs the public `Oraclizer/.github` repository and the +organization-profile surface it renders. It is not a governance document for +an external protocol, standards body, deployed network, or asset. + +## Maintainer authority + +Oraclizer maintains this repository. Jay Kim (`@jay-oraclizer`) is the current +repository owner and review owner. The maintainer controls access, triage, +merge decisions, public-profile claims, repository settings, and security +coordination. + +Opening an issue or Pull Request creates no obligation to accept, merge, +publish, release, or respond within a particular period. + +## Decision principles + +Changes are evaluated for: + +1. factual consistency with public repositories, specifications, papers, and + standards-process state; +2. explicit separation of research, specification, implementation, audit, + release, and deployment status; +3. accessibility, stable navigation, and responsive rendering; +4. licensing, attribution, disclosure, and confidentiality boundaries; +5. reproducibility of the repository-health check; +6. minimal, reviewable history through Pull Requests. + +## Merge policy + +Changes use a topic branch and Pull Request. The repository-health workflow +must pass, review conversations must be resolved, and the default branch must +retain a linear history. Force pushes and deletion of the default branch are +not permitted. + +A passing check validates repository structure only. It does not establish +the correctness or readiness of any project described by the profile. + +## Tags and releases + +This repository is an organization profile and policy surface, not a packaged +or deployable software product. It therefore does not create routine version +tags or GitHub Releases merely to mark documentation updates. + +If this repository later distributes a versioned artifact, a tag and release +must identify an immutable commit, artifact scope, status, verification, and +change summary. Existing tags must never be moved or reused. + +Visibility changes, protocol versions, paper publication, standards review, +audits, deployments, tags, and releases remain separate decisions. + +## Amendments + +Governance changes use the same Pull Request and review path and remain +traceable in Git history. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8cfd43b --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2026, Oraclizer +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..66fa058 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +
+ + + + + Oraclizer + + +### Organization profile and repository defaults + +[**Organization overview**](https://github.com/Oraclizer) · +[**Website**](https://oraclizer.io) · +[**Research**](https://research.oraclizer.io) · +[**Documentation**](https://docs.oraclizer.io) + +[![Repository health](https://github.com/Oraclizer/.github/actions/workflows/repository-health.yml/badge.svg)](https://github.com/Oraclizer/.github/actions/workflows/repository-health.yml) +[![License: BSD-3-Clause](https://img.shields.io/badge/license-BSD--3--Clause-0b5cad.svg)](LICENSE) + +
+ +This public `.github` repository controls two distinct surfaces: + +1. [`profile/README.md`](profile/README.md) is rendered on the public + Oraclizer organization overview. +2. The root community-health files and `.github` templates provide fallback + contribution guidance for Oraclizer repositories that do not define a + repository-specific policy. + +Repository-specific files always take precedence over these defaults. + +## Repository map + +| Path | Purpose | +| --- | --- | +| [`profile/README.md`](profile/README.md) | Public organization profile and project-status map | +| [`profile/assets/`](profile/assets/) | Responsive architecture and social-preview assets | +| [`SECURITY.md`](SECURITY.md) | Coordinated vulnerability-reporting boundary | +| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Default contribution and review expectations | +| [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) | Participation and enforcement expectations | +| [`SUPPORT.md`](SUPPORT.md) | Support, issue, and security channel separation | +| [`GOVERNANCE.md`](GOVERNANCE.md) | Maintenance, merge, and release policy for this repository | +| [`.github/`](.github/) | CODEOWNERS, issue forms, Pull Request template, Dependabot, and Continuous Integration | +| [`scripts/verify-profile.mjs`](scripts/verify-profile.mjs) | Dependency-free public-surface verification | + +## Public-surface contract + +Changes must keep repository visibility, protocol status, research status, +assurance boundaries, and links consistent with the underlying public +artifacts. A green repository-health check validates the structure of this +surface; it does not establish a deployment, audit, legal conclusion, +operational-security claim, or model-to-code refinement. + +Read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change. Report +sensitive concerns through [SECURITY.md](SECURITY.md), never through a public +issue or Pull Request. + +## License + +The files in this repository are licensed under the +[BSD 3-Clause License](LICENSE). A repository that inherits community-health +guidance from here remains governed by its own license. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..cfd148f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,42 @@ +# Security policy + +This file is the fallback security policy for Oraclizer repositories that do +not define a repository-specific `SECURITY.md`. A policy in the affected +repository takes precedence. + +## Report sensitive concerns privately + +For the repository affected by the concern: + +1. Open its **Security** tab. +2. Select **Advisories**. +3. Select **Report a vulnerability**. + +If Private Vulnerability Reporting is unavailable, email +`jay@oraclizer.io` with the subject `ORACLIZER SECURITY`. Identify the affected +repository and exact commit. Do not include unrelated secrets, personal data, +production credentials, or confidential third-party material. + +Do not disclose exploit details in a public issue, Pull Request, discussion, +standards forum, research review, or social post before coordinated disclosure. + +## Public reports + +Broken links, documentation defects, reproducibility failures, overly strong +claims, non-sensitive counterexamples, and model-scope concerns may use the +affected repository's public issue forms. + +When possible, include the exact repository, commit, path, tool version, +minimal reproduction, expected result, and observed result. + +## Handling boundary + +The maintainer will assess scope and may request additional information. No +response time, remediation time, disclosure date, bounty, safe-harbor term, +financial reward, audit conclusion, or service-level commitment is promised by +this policy. + +A public repository or passing workflow does not establish the security of an +implementation, deployment, network, cryptographic system, legal process, or +modified fork. The affected repository's license and explicit assurance +boundary remain controlling. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..341a31d --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,24 @@ +# Support + +Oraclizer's public repositories provide research, specifications, source, +formal artifacts, and repository-specific review channels. They do not provide +production support, integration consulting, deployment certification, asset +recovery, incident response, legal advice, or a response-time agreement. + +## Where to go + +| Need | Channel | +| --- | --- | +| Organization profile or public-link defect | Issue form in `Oraclizer/.github` | +| Repository-specific bug, proof, or documentation question | The affected repository's issue forms and `CONTRIBUTING.md` | +| Protocol semantics and conformance scope | [OIP documentation](https://docs.oraclizer.io/oip-v05/oip-overview/) | +| Research paper or artifact | [Research index](https://research.oraclizer.io) and the linked repository | +| Sensitive vulnerability | Private path in the affected repository's `SECURITY.md` | +| General or research inquiry | `jay@oraclizer.io` | + +Search existing public material first and include the exact repository, +commit, version, and reproduction details where applicable. Maintainers may +redirect, close, or leave unanswered requests outside the published scope. + +Never post credentials, personal data, confidential production details, or +uncoordinated vulnerability information in a public support channel. diff --git a/profile/assets/oraclizer-social-preview.png b/profile/assets/oraclizer-social-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..309fca719db87f4cf023c659efbe270095c09327 GIT binary patch literal 83546 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

ao$3S51rzs$}xWK)+Pe`m;G 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 + Oraclizer organization profile social preview + Oraclizer wordmark with the statement Formal, protocol, and proving foundations for cross-domain state synchronization and three labeled focus areas. + + + + + + + + + + + + + + + + + + + + + Cross-domain state synchronization + Formal, protocol, and proving foundations with explicit assurance boundaries. + + + + + PROTOCOL + OIP · RCP · ERC-8319 + + + + + FORMAL + Isabelle/HOL artifacts + + + + + PROVING + StateSync-GKR in development + + + ORACLIZER.IO + diff --git a/scripts/verify-profile.mjs b/scripts/verify-profile.mjs new file mode 100644 index 0000000..0f99bea --- /dev/null +++ b/scripts/verify-profile.mjs @@ -0,0 +1,163 @@ +import { existsSync, readFileSync } from "node:fs"; +import { dirname, normalize, resolve } from "node:path"; + +const root = process.cwd(); +const failures = []; + +function fail(message) { + failures.push(message); +} + +function read(relativePath) { + const absolutePath = resolve(root, relativePath); + if (!existsSync(absolutePath)) { + fail(`Missing required file: ${relativePath}`); + return ""; + } + const content = readFileSync(absolutePath, "utf8"); + if (content.startsWith("\uFEFF")) fail(`UTF-8 BOM is not allowed: ${relativePath}`); + if (content.includes("\uFFFD")) fail(`Replacement character found: ${relativePath}`); + return content; +} + +const requiredFiles = [ + "README.md", + "LICENSE", + "SECURITY.md", + "CONTRIBUTING.md", + "CODE_OF_CONDUCT.md", + "SUPPORT.md", + "GOVERNANCE.md", + "profile/README.md", + "profile/assets/oraclizer-system-map.svg", + "profile/assets/oraclizer-system-map-mobile.svg", + "profile/assets/oraclizer-social-preview.svg", + ".github/CODEOWNERS", + ".github/PULL_REQUEST_TEMPLATE.md", + ".github/ISSUE_TEMPLATE/config.yml", + ".github/ISSUE_TEMPLATE/documentation.yml", + ".github/ISSUE_TEMPLATE/repository-surface.yml", + ".github/dependabot.yml", + ".github/workflows/repository-health.yml", +]; + +for (const file of requiredFiles) read(file); + +const requiredBinaryFiles = ["profile/assets/oraclizer-social-preview.png"]; +for (const file of requiredBinaryFiles) { + if (!existsSync(resolve(root, file))) fail(`Missing required file: ${file}`); +} + +const profile = read("profile/README.md"); +const requiredProfileText = [ + "Formal, protocol, and proving foundations for cross-domain state synchronization", + "System and research map", + "Repository portfolio", + "Preparing for public release", + "Protocols and standards", + "Published research", + "Review and contact", + "Typed Regulatory Uniformity for Security Tokens", + "Unaudited and not for production", +]; + +for (const text of requiredProfileText) { + if (!profile.includes(text)) fail(`Profile is missing required text: ${text}`); +} + +const forbiddenPatterns = [ + [/Total Regulatory Unified/i, "stale ERC-TRUST expansion"], + [/The first oracle/i, "unverifiable first claim"], + [/complete state/i, "overbroad complete-state claim"], + [/safety and liveness under Byzantine faults/i, "unsupported Byzantine liveness claim"], + [/github\.com\/Oraclizer\/(?:erc-trust|statesync-gkr)/i, "private repository link"], + [/[A-Za-z]:\\Users\\/i, "machine-local Windows path"], +]; + +const publicTextFiles = [ + "README.md", + "SECURITY.md", + "CONTRIBUTING.md", + "CODE_OF_CONDUCT.md", + "SUPPORT.md", + "GOVERNANCE.md", + "profile/README.md", +].map((file) => [file, read(file)]); + +for (const [file, content] of publicTextFiles) { + for (const [pattern, description] of forbiddenPatterns) { + if (pattern.test(content)) fail(`${file} contains ${description}`); + } +} + +function verifyRelativeTargets(markdownPath, markdown) { + const targets = []; + for (const match of markdown.matchAll(/\[[^\]]*\]\(([^)]+)\)/g)) targets.push(match[1]); + for (const match of markdown.matchAll(/(?:src|srcset)="([^"]+)"/g)) targets.push(match[1]); + + for (const rawTarget of targets) { + const target = rawTarget.trim().split(/\s+/)[0]; + if (/^(?:https?:|mailto:|#)/i.test(target)) continue; + const withoutFragment = target.split("#")[0].split("?")[0]; + if (!withoutFragment) continue; + const candidate = normalize(resolve(root, dirname(markdownPath), withoutFragment)); + if (!candidate.startsWith(root)) { + fail(`${markdownPath} escapes the repository: ${target}`); + } else if (!existsSync(candidate)) { + fail(`${markdownPath} has a missing relative target: ${target}`); + } + } +} + +verifyRelativeTargets("README.md", read("README.md")); +verifyRelativeTargets("profile/README.md", profile); + +for (const svgPath of [ + "profile/assets/oraclizer-system-map.svg", + "profile/assets/oraclizer-system-map-mobile.svg", + "profile/assets/oraclizer-social-preview.svg", +]) { + const svg = read(svgPath); + if (!/^`); + if (!/]*>[^<]+<\/title>/.test(svg)) fail(`${svgPath} needs a non-empty title`); + if (!/]*>[^<]+<\/desc>/.test(svg)) fail(`${svgPath} needs a non-empty description`); + if (!/viewBox="0 0 \d+ \d+"/.test(svg)) fail(`${svgPath} needs a numeric viewBox`); + if (/= 1_000_000) fail("Social preview must remain under 1 MB"); + +const workflow = read(".github/workflows/repository-health.yml"); +const checkout = workflow.match(/actions\/checkout@([^\s#]+)/)?.[1] ?? ""; +if (!/^[0-9a-f]{40}$/.test(checkout)) { + fail("actions/checkout must be pinned to a full 40-character commit SHA"); +} +if (!workflow.includes("permissions:\n contents: read")) { + fail("Repository-health workflow must use read-only contents permission"); +} +if (!workflow.includes("timeout-minutes:")) { + fail("Repository-health workflow must define a timeout"); +} + +if (failures.length > 0) { + console.error("Repository health checks failed:"); + for (const failure of failures) console.error(`- ${failure}`); + process.exit(1); +} + +console.log( + `Repository health checks passed (${requiredFiles.length + requiredBinaryFiles.length} required files).`, +);