Complete guide for the panic-attack → verisimdb-data → hypatia → gitbot-fleet pipeline.
┌─────────────────┐
│ Repos with │
│ security-scan │──┐
│ workflow │ │
└─────────────────┘ │
│ panic-attack scan
↓ (JSON output)
┌──────────────────┐
│ verisimdb-data │
│ (git-backed) │
│ - scans/*.json │
│ - index.json │
└──────────────────┘
│
↓ read scans
┌──────────────────┐
│ hypatia │
│ - Logtalk rules │
│ - Pattern detect │
└──────────────────┘
│
↓ dispatch findings
┌──────────────────┐
│ gitbot-fleet │
│ - sustainabot │
│ - echidnabot │
│ - rhodibot │
└──────────────────┘
- verisimdb-data repo created and deployed (GitHub + GitLab)
- Reusable scan-and-report workflow in panic-attacker repo
- 3 pilot repos with security-scan workflows (echidna, ambientops, verisimdb)
- Hypatia VeriSimDB connector (reads scans, generates Logtalk facts)
- Hypatia pattern analyzer (summary statistics)
- Hypatia fleet dispatcher (routes findings to bots)
- Helper scripts for manual scan ingestion
- Verified working: 3 repos scanned, 27 weak points found, facts generated
- Workflow automation: scan-and-report.yml accepts optional VERISIMDB_PAT with GITHUB_TOKEN fallback (2026-02-12)
- Caller workflows updated: All 3 pilot repos pass VERISIMDB_PAT secret to reusable workflow (2026-02-12)
One manual step required: Create a GitHub classic PAT with repo scope and add it as VERISIMDB_PAT secret to the 3 pilot repos (see Steps 1-2 below). The workflow files are already configured to use it.
- Live GraphQL endpoints for gitbot-fleet
- Automated Logtalk rule evaluation
- Fleet dispatcher with real bot connections
- Temporal drift detection (comparing scans over time)
# 1. Run scan
cd ~/Documents/hyperpolymath-repos/echidna
panic-attack assail . --output /tmp/echidna-scan.json
# 2. Ingest result
cd ~/Documents/hyperpolymath-repos/verisimdb-data
./scripts/ingest-scan.sh echidna /tmp/echidna-scan.json
# 3. Push to remotes
git push
git push gitlab maincd ~/Documents/hyperpolymath-repos/verisimdb-data
./scripts/scan-all.sh echidna ambientops verisimdb
git push
git push gitlab maincd ~/Documents/hyperpolymath-repos/hypatia
mix run test_integration.exs- Go to https://github.com/settings/tokens
- Click "Generate new token" → "Generate new token (classic)"
- Name:
verisimdb-dispatch - Scopes: Check
repo(Full control of private repositories) - Generate token and save it securely
For each repo that will send scans (echidna, ambientops, verisimdb, etc.):
- Go to repo Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
VERISIMDB_PAT - Value: [paste your PAT]
- Click "Add secret"
The reusable workflow panic-attacker/.github/workflows/scan-and-report.yml now:
- Accepts optional
VERISIMDB_PATsecret viaworkflow_call - Uses
${{ secrets.VERISIMDB_PAT || secrets.GITHUB_TOKEN }}with automatic fallback - Uses
curl -sffor silent failure detection on dispatch
All 3 pilot repos now pass the VERISIMDB_PAT secret:
echidna/.github/workflows/security-scan.ymlambientops/.github/workflows/security-scan.ymlverisimdb/.github/workflows/security-scan.yml
gh workflow run security-scan.yml --repo hyperpolymath/echidnaThen check verisimdb-data for new commits:
cd ~/Documents/hyperpolymath-repos/verisimdb-data
git pull
ls scans/
cat index.json# In Elixir REPL
scans = Hypatia.VerisimdbConnector.fetch_all_scans()
# => Loads all scans from verisimdb-data/scans/
summary = Hypatia.PatternAnalyzer.generate_summary(scans)
# => %{total_repos: 3, total_weak_points: 27, ...}{:ok, analysis} = Hypatia.PatternAnalyzer.analyze_all_scans()
# => Writes facts to /tmp/scan_facts.lgtFacts format:
weak_point('echidna', 'src/rust/provers/z3.rs', 'PanicPath', 'Medium').
weak_point('echidna', 'src/rust/ffi/mod.rs', 'UnsafeCode', 'High').See hypatia/prolog/pattern_detection.lgt:
widespread_unsafe/2- Find patterns appearing in 3+ reposcritical_weak_points/2- Count critical issues per reporepo_risk_score/2- Calculate numeric risk score
findings = [
%{type: :eco_score, repo: "echidna", score: 75, details: "..."},
%{type: :proof_obligation, repo: "echidna", claim: "...", context: "..."},
%{type: :fix_suggestion, repo: "echidna", file: "...", issue: "...", suggestion: "..."}
]
Hypatia.PatternAnalyzer.process_findings(findings)
# => Logs dispatch to sustainabot, echidnabot, rhodibotNote: GraphQL mutations are currently logged, not sent. Bots need to expose GraphQL endpoints.
jq '.repos' ~/Documents/hyperpolymath-repos/verisimdb-data/index.jsonjq -r '.repos | to_entries | sort_by(.value.weak_points) | reverse | map("\(.key): \(.value.weak_points)") | .[]' index.jsonjq '.' ~/Documents/hyperpolymath-repos/verisimdb-data/scans/echidna.json | less- Create PAT and add as VERISIMDB_PAT secret (only remaining manual step)
- Add more repos to security scanning
- Implement actual GraphQL endpoints for gitbot-fleet
- Temporal drift detection (compare scans over time)
- Automated rule learning (detect new patterns)
- SARIF output for GitHub Security tab
- Fly.io deployment of verisim-api (optional, beyond flat files)
- GitHub App for organization-wide scanning
- Real-time pattern detection (immediate alerts)
- Integration with echidnabot for formal verification
- Automated fix generation via rhodibot
Solution: Update to SHA-pinned version (see ~/.claude/CLAUDE.md for SHAs)
Check:
- Is PAT configured in scanning repo secrets?
- Does PAT have
reposcope? - Is reusable workflow using
secrets.VERISIMDB_PATinstead ofGITHUB_TOKEN? - Check verisimdb-data workflow runs:
gh run list --repo hyperpolymath/verisimdb-data
Solution: panic-attack writes JSON automatically when --output is specified. Remove --format json flag.
Check:
- Is verisimdb-data at
~/Documents/hyperpolymath-repos/verisimdb-data? - Do JSON files exist in
scans/directory? - Is Jason dependency installed? (
cd hypatia && mix deps.get)
- panic-attack issues: https://github.com/hyperpolymath/panic-attacker/issues
- verisimdb issues: https://github.com/hyperpolymath/verisimdb/issues
- hypatia issues: https://github.com/hyperpolymath/hypatia/issues
- SONNET-TASKS.md - Original implementation tasks
- scripts/README.md - Helper script documentation
- hypatia/test_integration.exs - Integration test example
- panic-attacker/.claude/CLAUDE.md - panic-attack documentation
- verisimdb/.claude/CLAUDE.md - VeriSimDB architecture