Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# SPDX-License-Identifier: MPL-2.0
# Dependabot configuration for RSR-compliant repositories
# Covers common ecosystems - remove unused ones for your project

version: 2
updates:
# GitHub Actions - always include
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
actions:
patterns:
- "*"

# Rust/Cargo
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
# `open-pull-requests-limit: 0` suppresses routine version-update PRs
# while leaving Dependabot SECURITY PRs flowing. The previous
# `ignore: "*" patch` rule also silenced security PRs under GitHub\'s
# current Dependabot behaviour. See rsr-template-repo commit 78b050e
# and 007-lang/audits/audit-dependabot-automation-gap-2026-04-17.md.
open-pull-requests-limit: 0

# Elixir/Mix
- package-ecosystem: "mix"
directory: "/"
schedule:
interval: "weekly"

# Node.js/npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"

# Python/pip
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"

# Nix flakes
- package-ecosystem: "nix"
directory: "/"
schedule:
interval: "weekly"
1 change: 1 addition & 0 deletions .github/workflows/anchor-drift.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ on:
workflow_dispatch:

permissions:
actions: read
contents: read

jobs:
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# SPDX-License-Identifier: MPL-2.0
name: CodeQL

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 0 * * 0'

permissions:
actions: read
contents: read
security-events: write

jobs:
analyze:
name: CodeQL Analysis
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4

- name: Initialize CodeQL
uses: github/codeql-action/init@4187e74d05793876e9989daffde9c3e66b4acd07 # v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}

- name: Autobuild
uses: github/codeql-action/autobuild@4187e74d05793876e9989daffde9c3e66b4acd07 # v3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@4187e74d05793876e9989daffde9c3e66b4acd07 # v3
1 change: 1 addition & 0 deletions .github/workflows/push-email-notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ name: Push email notification
on:
push: {}
permissions:
actions: read
contents: read
jobs:
notify:
Expand Down
93 changes: 0 additions & 93 deletions GOVERNANCE.adoc

This file was deleted.

81 changes: 81 additions & 0 deletions gleam/scripts/check-no-vlang.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
#
# check-no-vlang.sh — enforce "V-lang is banned in the estate".
#
# Estate rule: V-lang (vlang.io) is banned estate-wide (2026-04-10). It was
# migrated to Zig — the estate's default FFI/API/gateway language — via the
# `zig-unified-api-adapter`. Zig is ALLOWED and is deliberately NOT matched by
# this check; only V-lang references are treated as drift and must be removed.
#
# Searches for V-lang-specific content patterns in tracked files. The .v file
# extension is intentionally NOT used as a marker because Coq theorem files
# share that extension; this check looks at content patterns instead.
#
# Excludes:
# .git/ (vcs internals)
# affinescript/ (a separately-licensed AffineScript subtree; pattern hits
# there are not estate-managed and false-positive on `.v` mentions in
# linguistic / academic prose).
#
# Exit codes:
# 0 — no V-lang references found
# 1 — V-lang references found (treat as drift)
# 2 — usage / setup error

set -euo pipefail

REPO_ROOT="${1:-.}"

# Patterns that uniquely indicate V-lang code, scaffolding, or naming.
# Zig is the estate FFI/API default and is deliberately NOT matched here.
# Coq's `.v` extension and the affinescript subtree are excluded by path.
PATTERNS=(
'gen-v-connector'
'V-TRIPLE'
'v-triple'
'vlang'
'connectors/v-'
)

PATTERN_OR=$(IFS='|'; echo "${PATTERNS[*]}")

# Files that document the V-lang ban itself (the rule's own description
# legitimately names "V-lang", "vlang", "V-TRIPLE", etc.). Excluded by name.
DOC_EXCLUSIONS=(
"estate-rules.yml" # the workflow that calls this script
"check-no-vlang.sh" # this script itself
"PLAYBOOK.a2ml" # documents the [rsr-repo-skeleton] rules
"feedback_v_lang_banned.md" # memory entry documenting the ban
"project_zig_unified_api.md" # memory entry documenting the replacement
)

EXCLUDE_ARGS=()
for f in "${DOC_EXCLUSIONS[@]}"; do
EXCLUDE_ARGS+=(--exclude="$f")
done

# Build grep arguments. Use -r to recurse, -n for line numbers, -i for
# case-insensitive matching. Exclude .git, the affinescript subtree, and
# files that legitimately document the ban.
HITS=$(grep -rni -E "$PATTERN_OR" "$REPO_ROOT" \
--exclude-dir=.git \
--exclude-dir=affinescript \
--exclude-dir=node_modules \
"${EXCLUDE_ARGS[@]}" \
2>/dev/null || true)

if [ -z "$HITS" ]; then

Check failure on line 69 in gleam/scripts/check-no-vlang.sh

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use '[[' instead of '[' for conditional tests. The '[[' construct is safer and more feature-rich.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_a2ml-ecosystem&issues=AZ-pV0yFvSJGQeq6kQy1&open=AZ-pV0yFvSJGQeq6kQy1&pullRequest=25
echo "PASS: no V-lang references"
exit 0
fi

# Count matches
LINES=$(echo "$HITS" | wc -l | tr -d ' ')

echo "FAIL: $LINES V-lang reference(s) found (estate rule: V-lang is banned):" >&2
echo "$HITS" | sed 's|^| |' >&2
echo "" >&2
echo "V-lang has been replaced by Zig (the zig-unified-api-adapter). Remove these references." >&2
exit 1
Loading