Skip to content

Commit 89da675

Browse files
committed
ci: fix governance ReScript ban + add clusterfuzzlite build scaffold
The merged PR #19 surfaced two pre-existing CI failures that didn't block the merge but should be fixed before more PRs land: governance / Language anti-pattern policy: - Estate-wide governance bundle in hyperpolymath/standards bans .res files by default. VeriSimDB legitimately uses 34 ReScript files for the VQL parser, federation registry, ABI bridge, and Playground UI (per CLAUDE.md language policy). - Added .hypatia-ignore with explicit `cicd_rules/banned_language_file` entries for each .res file. The comment block documents the policy decision so future audits don't reopen this. pr-fuzzing (ClusterFuzzLite): - .clusterfuzzlite/ contained only project.yaml (language: rust). Missing build.sh meant the runner had no idea how to build the fuzz harnesses, so every PR-fuzzing run failed in 36s. - Added build.sh that runs cargo fuzz build for both harnesses (fuzz_octad_id and fuzz_vql_parser) with the requested sanitizer. - Added Dockerfile based on gcr.io/oss-fuzz-base/base-builder-rust. - build.sh has commented-out seed corpus hooks for when we accumulate interesting inputs to bootstrap with. https://claude.ai/code/session_01GeiWCLLoZmPdnjMMcy2buu
1 parent 101a624 commit 89da675

3 files changed

Lines changed: 86 additions & 0 deletions

File tree

.clusterfuzzlite/Dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# ClusterFuzzLite build environment for VeriSimDB
3+
FROM gcr.io/oss-fuzz-base/base-builder-rust
4+
5+
COPY . $SRC/verisimdb
6+
WORKDIR $SRC/verisimdb
7+
COPY .clusterfuzzlite/build.sh $SRC/build.sh

.clusterfuzzlite/build.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: MPL-2.0
3+
# ClusterFuzzLite build script for VeriSimDB
4+
#
5+
# Builds both fuzz harnesses with libfuzzer instrumentation and copies the
6+
# resulting binaries to $OUT (where ClusterFuzzLite expects them).
7+
#
8+
# Required env vars (set by ClusterFuzzLite runner):
9+
# $OUT — output directory for built fuzzer binaries
10+
# $SRC — source root (typically /src/verisimdb)
11+
# $SANITIZER — address | undefined | memory (we honour via RUSTFLAGS)
12+
13+
set -euo pipefail
14+
15+
# cargo-fuzz drives libfuzzer; install it if missing.
16+
if ! command -v cargo-fuzz &>/dev/null; then
17+
cargo install cargo-fuzz --locked
18+
fi
19+
20+
# ── fuzz_octad_id — top-level fuzz crate ─────────────────────────────────
21+
cd "${SRC}/verisimdb/fuzz"
22+
cargo fuzz build --release --sanitizer="${SANITIZER:-address}"
23+
cp target/*/release/fuzz_octad_id "${OUT}/"
24+
25+
# ── fuzz_vql_parser — rust-core fuzz crate ───────────────────────────────
26+
cd "${SRC}/verisimdb/rust-core/fuzz"
27+
cargo fuzz build --release --sanitizer="${SANITIZER:-address}"
28+
cp target/*/release/fuzz_vql_parser "${OUT}/"
29+
30+
# Optional seed corpora — empty for now, will populate as we discover
31+
# interesting inputs. Comment in once corpora exist:
32+
# cp -r "${SRC}/verisimdb/fuzz/corpus/fuzz_octad_id" "${OUT}/fuzz_octad_id_seed_corpus" 2>/dev/null || true
33+
# cp -r "${SRC}/verisimdb/rust-core/fuzz/corpus/fuzz_vql_parser" "${OUT}/fuzz_vql_parser_seed_corpus" 2>/dev/null || true

.hypatia-ignore

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# .hypatia-ignore — file-level exemptions from estate-wide hypatia rules
2+
#
3+
# ReScript (.res) files are permitted in this repository per CLAUDE.md
4+
# language policy. ReScript powers:
5+
# - src/vql/ — VQL parser, type checker, circuits, subtyping
6+
# - src/registry/ — federation registry (Kraft consensus, metadata log)
7+
# - src/abi/ — Idris2/ReScript ABI bridge
8+
# - playground/ — VQL Playground web UI
9+
# - connectors/clients/rescript/ — ReScript client SDK
10+
#
11+
# Each file is whitelisted by absolute repo path.
12+
13+
cicd_rules/banned_language_file:examples/SafeDOMExample.res
14+
cicd_rules/banned_language_file:src/vql/VQLContext.res
15+
cicd_rules/banned_language_file:src/vql/VQLParser_test.res
16+
cicd_rules/banned_language_file:src/vql/VQLSubtyping.res
17+
cicd_rules/banned_language_file:src/vql/VQLCircuit.res
18+
cicd_rules/banned_language_file:src/vql/VQLExplain.res
19+
cicd_rules/banned_language_file:src/vql/VQLTypes.res
20+
cicd_rules/banned_language_file:src/vql/VQLError.res
21+
cicd_rules/banned_language_file:src/vql/VQLParser.res
22+
cicd_rules/banned_language_file:src/vql/VQLBidir.res
23+
cicd_rules/banned_language_file:src/vql/VQLProofObligation.res
24+
cicd_rules/banned_language_file:src/vql/VQLTypeChecker.res
25+
cicd_rules/banned_language_file:src/registry/MetadataLog.res
26+
cicd_rules/banned_language_file:src/registry/KRaftSerializer.res
27+
cicd_rules/banned_language_file:src/registry/Registry.res
28+
cicd_rules/banned_language_file:src/registry/KRaftCluster.res
29+
cicd_rules/banned_language_file:debugger/examples/SafeDOMExample.res
30+
cicd_rules/banned_language_file:playground/src/Examples.res
31+
cicd_rules/banned_language_file:playground/src/Formatter.res
32+
cicd_rules/banned_language_file:playground/src/App.res
33+
cicd_rules/banned_language_file:playground/src/DemoExecutor.res
34+
cicd_rules/banned_language_file:playground/src/Linter.res
35+
cicd_rules/banned_language_file:playground/src/VqlKeywords.res
36+
cicd_rules/banned_language_file:playground/src/Highlighter.res
37+
cicd_rules/banned_language_file:playground/src/ApiClient.res
38+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimVql.res
39+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimFederation.res
40+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimProvenance.res
41+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimDrift.res
42+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimClient.res
43+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimHexad.res
44+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimTypes.res
45+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimSearch.res
46+
cicd_rules/banned_language_file:connectors/clients/rescript/src/VeriSimError.res

0 commit comments

Comments
 (0)