Skip to content

Commit 7e11326

Browse files
hyperpolymathclaude
andcommitted
Revert "ci(workflow): adopt hardened hypatia-scan from hyperpolymath/hypatia#237 (#126)"
This reverts commit bf355fb by restoring the tree to its state at 10dd20d (the pre-merge parent). PR #126 was intended to change only `.github/workflows/hypatia-scan.yml` and add `.hypatia-baseline.json`. Instead the squash-merged commit deleted 1777 other files in the repo (323,984 line deletions), collapsing the working tree to just those two. The other 6 propagation PRs in the same batch (somethings-fishy, bofig, etc.) diffed as +2/-0 files as intended; only gitbot-fleet was hit. Local `git revert` couldn't be used here because some of the deleted files have `:` in their names (e.g. shared-context/findings/.../2026-02- 14T00:00:00Z.json) and Windows rejects those paths. Restoration done via GitHub API: new commit whose tree SHA matches the pre-merge tree. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent bf355fb commit 7e11326

1,778 files changed

Lines changed: 323984 additions & 207 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.claude/CLAUDE.md‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
3+
# CLAUDE.md - Gitbot Fleet
4+
5+
## Project Overview
6+
7+
Gitbot Fleet is the bot orchestration hub for automated repository quality enforcement across 500+ hyperpolymath repositories. It coordinates multiple bots through a shared-context system with safety-triangle-aware routing.
8+
9+
## Architecture
10+
11+
```
12+
hypatia (scanner) → findings JSONL → fleet-coordinator.sh → dispatch-runner.sh
13+
↓
14+
┌──────────┼──────────┐
15+
▼ ▼ ▼
16+
rhodibot echidnabot sustainabot
17+
(git ops) (quality) (deps)
18+
↓
19+
robot-repo-automaton
20+
(scan → fix → commit → PR)
21+
```
22+
23+
## Key Components
24+
25+
| Component | Location | Purpose |
26+
|-----------|----------|---------|
27+
| fleet-coordinator.sh | root | Orchestrates bot dispatching |
28+
| dispatch-runner.sh | scripts/ | Reads JSONL manifests, executes fixes |
29+
| process-review-findings.sh | scripts/ | Creates GitHub issues for review-tier |
30+
| fix-*.sh | scripts/ | 7 fix scripts for eliminate-tier patterns |
31+
| shared-context/ | shared-context/ | Rust crate for inter-bot communication |
32+
| robot-repo-automaton/ | robot-repo-automaton/ | Rust CLI: scan, fix, PR creation |
33+
34+
## Build & Run
35+
36+
```bash
37+
# Shell scripts (no build needed)
38+
bash fleet-coordinator.sh --help
39+
40+
# Robot-repo-automaton (Rust)
41+
cd robot-repo-automaton
42+
OPENSSL_NO_VENDOR=1 cargo build --release
43+
./target/release/robot-repo-automaton scan /path/to/repo
44+
./target/release/robot-repo-automaton fix /path/to/repo --create-pr
45+
```
46+
47+
## Safety Triangle
48+
49+
```
50+
Eliminate (auto_execute >= 0.95) → Direct fix, no review
51+
Substitute (review >= 0.85) → proven module replacement, needs review
52+
Control (report < 0.85) → Human review required
53+
```
54+
55+
## Code Style
56+
57+
- SPDX headers: `PMPL-1.0-or-later`
58+
- Author: Jonathan D.A. Jewell <jonathan.jewell@open.ac.uk>
59+
- Shell scripts: bash with `set -euo pipefail`
60+
- Rust: standard formatting, `anyhow::Result` for error handling
61+
- JSON construction in shell: always use `jq` (never string interpolation)
62+
63+
## Critical Invariants
64+
65+
1. SCM files ONLY in `.machine_readable/6scm/` (never root)
66+
2. All shell scripts must validate untrusted input before use
67+
3. No hardcoded secrets — use env vars with `${VAR:-}` defaults
68+
4. Fix scripts must be idempotent (safe to run multiple times)
69+
5. Confidence thresholds gate all automated actions

‎.dockerignore‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
3+
# Git
4+
.git
5+
.gitignore
6+
.gitattributes
7+
8+
# Build artifacts
9+
target/
10+
**/*.rs.bk
11+
*.pdb
12+
13+
# IDE
14+
.vscode/
15+
.idea/
16+
*.swp
17+
*.swo
18+
*~
19+
20+
# Documentation
21+
*.md
22+
!README.md
23+
docs/
24+
25+
# CI/CD
26+
.github/
27+
.gitlab-ci.yml
28+
29+
# Testing
30+
tests/
31+
test-repo/
32+
33+
# Development
34+
.env
35+
.env.local
36+
*.log
37+
38+
# System
39+
.DS_Store
40+
Thumbs.db
41+
42+
# Deployment (not needed in image)
43+
deploy/
44+
docker-compose.yml

‎.editorconfig‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# SPDX-FileCopyrightText: 2025 hyperpolymath
3+
4+
root = true
5+
6+
[*]
7+
indent_style = space
8+
indent_size = 2
9+
end_of_line = lf
10+
charset = utf-8
11+
trim_trailing_whitespace = true
12+
insert_final_newline = true
13+
14+
[*.rs]
15+
indent_size = 4
16+
17+
[*.scm]
18+
indent_size = 2
19+
20+
[Makefile]
21+
indent_style = tab
22+
23+
[*.md]
24+
trim_trailing_whitespace = false

‎.gitattributes‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# RSR-compliant .gitattributes
3+
4+
* text=auto eol=lf
5+
6+
# Source
7+
*.rs text eol=lf diff=rust
8+
*.ex text eol=lf diff=elixir
9+
*.exs text eol=lf diff=elixir
10+
*.jl text eol=lf
11+
*.res text eol=lf
12+
*.resi text eol=lf
13+
*.ada text eol=lf diff=ada
14+
*.adb text eol=lf diff=ada
15+
*.ads text eol=lf diff=ada
16+
*.hs text eol=lf
17+
*.chpl text eol=lf
18+
*.scm text eol=lf
19+
*.ncl text eol=lf
20+
*.nix text eol=lf
21+
22+
# Docs
23+
*.md text eol=lf diff=markdown
24+
*.adoc text eol=lf
25+
*.txt text eol=lf
26+
27+
# Data
28+
*.json text eol=lf
29+
*.yaml text eol=lf
30+
*.yml text eol=lf
31+
*.toml text eol=lf
32+
33+
# Config
34+
.gitignore text eol=lf
35+
.gitattributes text eol=lf
36+
justfile text eol=lf
37+
Makefile text eol=lf
38+
Containerfile text eol=lf
39+
40+
# Scripts
41+
*.sh text eol=lf
42+
43+
# Binary
44+
*.png binary
45+
*.jpg binary
46+
*.gif binary
47+
*.pdf binary
48+
*.woff2 binary
49+
*.zip binary
50+
*.gz binary
51+
52+
# Lock files
53+
Cargo.lock text eol=lf -diff
54+
flake.lock text eol=lf -diff

‎.github/CODEOWNERS‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath)
3+
#
4+
# CODEOWNERS — gitbot-fleet
5+
6+
# Default owner for all files
7+
* @hyperpolymath
8+
9+
# Core orchestration (security-critical — taint flow validated)
10+
/fleet-coordinator.sh @hyperpolymath
11+
/scripts/ @hyperpolymath
12+
13+
# Rust executors
14+
/robot-repo-automaton/ @hyperpolymath
15+
/shared-context/ @hyperpolymath
16+
17+
# Bot implementations
18+
/bots/ @hyperpolymath
19+
20+
# Security-sensitive
21+
/.github/workflows/ @hyperpolymath
22+
/.well-known/ @hyperpolymath
23+
/SECURITY.md @hyperpolymath
24+
25+
# Machine-readable metadata
26+
/.machine_readable/ @hyperpolymath

‎.github/dependabot.yml‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
version: 2
3+
updates:
4+
- package-ecosystem: "github-actions"
5+
directory: "/"
6+
schedule:
7+
interval: "daily"
8+
groups:
9+
actions:
10+
patterns:
11+
- "*"
12+
13+
# Rust dependencies
14+
- package-ecosystem: "cargo"
15+
directory: "/robot-repo-automaton"
16+
schedule:
17+
interval: "weekly"
18+
19+
- package-ecosystem: "cargo"
20+
directory: "/shared-context"
21+
schedule:
22+
interval: "weekly"
23+
24+
- package-ecosystem: "cargo"
25+
directory: "/bots/echidnabot"
26+
schedule:
27+
interval: "weekly"
28+
29+
- package-ecosystem: "cargo"
30+
directory: "/bots/glambot"
31+
schedule:
32+
interval: "weekly"
33+
34+
- package-ecosystem: "cargo"
35+
directory: "/bots/rhodibot"
36+
schedule:
37+
interval: "weekly"
38+
39+
- package-ecosystem: "cargo"
40+
directory: "/bots/seambot"
41+
schedule:
42+
interval: "weekly"
43+
44+
- package-ecosystem: "cargo"
45+
directory: "/bots/sustainabot"
46+
schedule:
47+
interval: "weekly"
48+
49+
- package-ecosystem: "cargo"
50+
directory: "/bots/finishingbot"
51+
schedule:
52+
interval: "weekly"
53+
54+
- package-ecosystem: "cargo"
55+
directory: "/bots/accessibilitybot"
56+
schedule:
57+
interval: "weekly"
58+
59+
- package-ecosystem: "cargo"
60+
directory: "/bots/cipherbot"
61+
schedule:
62+
interval: "weekly"
63+
64+
- package-ecosystem: "cargo"
65+
directory: "/bots/panicbot"
66+
schedule:
67+
interval: "weekly"
68+
69+
# Python dependencies for gsbot
70+
- package-ecosystem: "pip"
71+
directory: "/bots/gsbot"
72+
schedule:
73+
interval: "weekly"

‎.github/workflows/boj-build.yml‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
name: BoJ Server Build Trigger
3+
on:
4+
push:
5+
branches: [main, master]
6+
workflow_dispatch:
7+
jobs:
8+
trigger-boj:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout
12+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
13+
- name: Trigger BoJ Server (Casket/ssg-mcp)
14+
run: |
15+
# Send a secure trigger to boj-server to build this repository
16+
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\\"}"}
17+
continue-on-error: true
18+
permissions:
19+
contents: read

0 commit comments

Comments
 (0)