diff --git a/.githooks/validate-a2ml.sh b/.github/hooks/validate-a2ml.sh similarity index 100% rename from .githooks/validate-a2ml.sh rename to .github/hooks/validate-a2ml.sh diff --git a/.githooks/validate-k9.sh b/.github/hooks/validate-k9.sh similarity index 100% rename from .githooks/validate-k9.sh rename to .github/hooks/validate-k9.sh diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index b4643ab..bc3a4cd 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -40,7 +40,7 @@ jobs: - name: Validate A2ML manifests if: steps.detect.outputs.count > 0 - run: bash .githooks/validate-a2ml.sh + run: bash .github/hooks/validate-a2ml.sh - name: Write summary run: | A2ML_COUNT="${{ steps.detect.outputs.count }}" @@ -85,7 +85,7 @@ jobs: - name: Validate K9 contracts if: steps.detect.outputs.k9_count > 0 - run: bash .githooks/validate-k9.sh + run: bash .github/hooks/validate-k9.sh - name: Write summary run: | K9_COUNT="${{ steps.detect.outputs.k9_count }}" diff --git a/.machine_readable/contractiles/Justfile b/.machine_readable/contractiles/Justfile index 229fecd..c0eb67a 100644 --- a/.machine_readable/contractiles/Justfile +++ b/.machine_readable/contractiles/Justfile @@ -564,11 +564,11 @@ state-phase: # Enter Guix development shell (primary) guix-shell: - guix shell -D -f guix.scm + guix shell -D -f build/guix.scm # Build with Guix guix-build: - guix build -f guix.scm + guix build -f build/guix.scm # Enter Guix development shell (fallback) guix-shell: diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 421e82c..4d16160 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -24,7 +24,7 @@ git clone https://github.com/hyperpolymath/echidnabot.git cd echidnabot # Reproducible environment (Guix is the estate primary; guix is deprecated 2026-06-01) -guix shell -D -f guix.scm # Guix package (guix.scm) +guix shell -D -f build/guix.scm # Guix package (guix.scm) # Or bring your own toolchain (Rust 1.75+, SQLite, podman/bwrap) diff --git a/Justfile b/Justfile index 68742bf..a21a842 100644 --- a/Justfile +++ b/Justfile @@ -565,11 +565,11 @@ state-phase: # Enter Guix development shell (primary) guix-shell: - guix shell -D -f guix.scm + guix shell -D -f build/guix.scm # Build with Guix guix-build: - guix build -f guix.scm + guix build -f build/guix.scm # ═══════════════════════════════════════════════════════════════════════════════ # HYBRID AUTOMATION diff --git a/contractiles/must/Mustfile b/contractiles/must/Mustfile index 8ed15fc..7cd28f1 100644 --- a/contractiles/must/Mustfile +++ b/contractiles/must/Mustfile @@ -65,7 +65,7 @@ checks: - name: M008-guix-scm-present description: "guix.scm or .guix-channel exists (guix is the sole reproducible-dev vehicle)." severity: warning - run: "test -f guix.scm || test -f .guix-channel" + run: "test -f build/guix.scm || test -f .guix-channel" recovery: "Add guix.scm or .guix-channel; owner input on channel URL if missing." - name: M009-no-secrets-committed diff --git a/guix.scm b/guix.scm deleted file mode 100644 index 3ace610..0000000 --- a/guix.scm +++ /dev/null @@ -1,75 +0,0 @@ -;; echidnabot - Guix Package Definition -;; Development: guix shell -D -f guix.scm -;; Build: guix build -f guix.scm - -(use-modules (guix packages) - (guix gexp) - (guix git-download) - (guix build-system cargo) - ((guix licenses) #:prefix license:) - (gnu packages base) - (gnu packages crates-io) - (gnu packages rust) - (gnu packages rust-apps) - (gnu packages sqlite) - (gnu packages tls) - (gnu packages pkg-config)) - -(define-public echidnabot - (package - (name "echidnabot") - (version "0.1.0") - (source (local-file "." "echidnabot-checkout" - #:recursive? #t - #:select? (git-predicate "."))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (;; Core async runtime - ("rust-tokio" ,rust-tokio-1) - ;; HTTP framework - ("rust-axum" ,rust-axum-0.7) - ("rust-tower" ,rust-tower-0.4) - ("rust-tower-http" ,rust-tower-http-0.5) - ;; Serialization - ("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-toml" ,rust-toml-0.8) - ;; Database - ("rust-sqlx" ,rust-sqlx-0.8) - ;; HTTP client - ("rust-reqwest" ,rust-reqwest-0.11) - ;; Utilities - ("rust-uuid" ,rust-uuid-1) - ("rust-chrono" ,rust-chrono-0.4) - ("rust-thiserror" ,rust-thiserror-1) - ("rust-anyhow" ,rust-anyhow-1) - ("rust-tracing" ,rust-tracing-0.1) - ("rust-tracing-subscriber" ,rust-tracing-subscriber-0.3) - ;; Crypto - ("rust-hmac" ,rust-hmac-0.12) - ("rust-sha2" ,rust-sha2-0.10) - ("rust-hex" ,rust-hex-0.4) - ;; CLI - ("rust-clap" ,rust-clap-4) - ("rust-config" ,rust-config-0.14)) - #:cargo-development-inputs - (("rust-tokio-test" ,rust-tokio-test-0.4) - ("rust-tempfile" ,rust-tempfile-3)))) - (native-inputs - (list pkg-config - rust - rust-cargo)) - (inputs - (list sqlite - openssl)) - (synopsis "Proof-aware CI bot for theorem prover repositories") - (description - "echidnabot monitors code repositories containing formal proofs and -delegates verification to ECHIDNA Core. It integrates with GitHub, GitLab, -and Bitbucket to provide automated proof checking via webhooks.") - (home-page "https://github.com/hyperpolymath/echidnabot") - (license license:agpl3+))) - -;; For development shell -echidnabot