diff --git a/.envrc b/.envrc index 916ce653..c2883469 100644 --- a/.envrc +++ b/.envrc @@ -10,8 +10,8 @@ if has asdf; then use asdf fi -# Load Guix shell if guix.scm exists (quiet mode) -if has guix && [ -f guix.scm ]; then +# Load Guix shell if build/guix.scm exists (quiet mode) +if has guix && [ -f build/guix.scm ]; then use guix --quiet fi 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 82310522..b926c72a 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -50,7 +50,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 }}" @@ -95,7 +95,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/CONTRIBUTING.adoc b/CONTRIBUTING.adoc deleted file mode 100644 index 94aa289b..00000000 --- a/CONTRIBUTING.adoc +++ /dev/null @@ -1,83 +0,0 @@ -== Contributing - -Thank you for your interest in contributing! We follow a "`Dual-Track`" -architecture where human-readable documentation lives in the root and -machine-readable policies live in `+.machine_readable/+`. - -=== How to Contribute - -We welcome contributions in many forms: - -* *Code:* Improving the core stack or extensions -* *Documentation:* Enhancing docs or AI manifests -* *Testing:* Adding property-based tests or formal proofs -* *Bug reports:* Filing clear, reproducible issues - -=== Getting Started - -[arabic] -. *Read the AI Manifest:* Start with `+0-AI-MANIFEST.a2ml+` (if present) -to understand the repository structure. -. *Environment:* Use `+guix develop+` or `+direnv allow+` to set up your -tools. -. *Task Runner:* Use `+just+` to see available commands -(`+just --list+`). - -=== Development Workflow - -==== Branch Naming - -.... -docs/short-description # Documentation -test/what-added # Test additions -feat/short-description # New features -fix/issue-number-description # Bug fixes -refactor/what-changed # Code improvements -security/what-fixed # Security fixes -.... - -==== Commit Messages - -We follow https://www.conventionalcommits.org/[Conventional Commits]: - -.... -(): - -[optional body] - -[optional footer] -.... - -Types: `+feat+`, `+fix+`, `+docs+`, `+test+`, `+refactor+`, `+ci+`, -`+chore+`, `+security+` - -==== CI / Required Checks - -Required status-check workflows must *always report*. Never add -`+on.*.paths+` to a required workflow — a path-filtered required check -that doesn’t trigger is reported as permanently "`Expected`" and blocks -the PR even when everything is green. Use the estate pattern: an -always-run `+changes+` job plus heavy jobs gated by -`+if: needs.changes.outputs.run == 'true'+` (a job skipped via `+if:+` -passes the required check). Full rationale in -`+docs/AI-CONVENTIONS.adoc+` §"`CI / Required Status Checks`" and the -`+docs/wikis/CI-and-Required-Checks.adoc+` wiki page. - -=== Reporting Bugs - -Before reporting: 1. Search existing issues 2. Check if it’s already -fixed in `+main+` - -When reporting, include: - Clear, descriptive title - Environment -details (OS, versions, toolchain) - Steps to reproduce - Expected vs -actual behaviour - -=== Code of Conduct - -All contributors are expected to adhere to our -link:CODE_OF_CONDUCT.md[Code of Conduct]. - -=== License - -By contributing, you agree that your contributions will be licensed -under the same license as the project (see LICENSE). diff --git a/Justfile b/Justfile index 491a5009..808932d2 100644 --- a/Justfile +++ b/Justfile @@ -1053,11 +1053,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/docs/RSR_OUTLINE.adoc b/docs/RSR_OUTLINE.adoc index f5cab342..dd3e9859 100644 --- a/docs/RSR_OUTLINE.adoc +++ b/docs/RSR_OUTLINE.adoc @@ -26,7 +26,7 @@ git clone https://github.com/hyperpolymath/boj-server cd boj-server # Enter development environment (Guix primary, Guix fallback) -guix shell -D -f guix.scm +guix shell -D -f build/guix.scm # or: guix develop # Build all FFI layers diff --git a/docs/quickstarts/DEV.adoc b/docs/quickstarts/DEV.adoc index 3f58799c..dd5f0a0d 100644 --- a/docs/quickstarts/DEV.adoc +++ b/docs/quickstarts/DEV.adoc @@ -17,7 +17,7 @@ Or use the development environment: [source,bash] ---- -guix shell -D -f guix.scm # Guix (primary) +guix shell -D -f build/guix.scm # Guix (primary) guix develop # Guix (fallback) ---- diff --git a/docs/wikis/Developer-Guide.adoc b/docs/wikis/Developer-Guide.adoc index 1a380b57..31cd1fe1 100644 --- a/docs/wikis/Developer-Guide.adoc +++ b/docs/wikis/Developer-Guide.adoc @@ -103,7 +103,7 @@ Or use the declarative environment: [source,bash] ---- -guix shell -D -f guix.scm # Guix (primary) +guix shell -D -f build/guix.scm # Guix (primary) guix develop # Guix (fallback) ---- diff --git a/guix.scm b/guix.scm deleted file mode 100644 index 3335c8d5..00000000 --- a/guix.scm +++ /dev/null @@ -1,59 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -;; -;; Guix package definition for Bundle of Joy Server -;; -;; Usage: -;; guix shell -D -f guix.scm # Enter development shell -;; guix build -f guix.scm # Build package - -(use-modules (guix packages) - (guix gexp) - (guix git-download) - (guix build-system gnu) - (guix licenses) - (gnu packages base)) - -(package - (name "boj-server") - (version "0.1.0") - (source (local-file "." "source" - #:recursive? #t - #:select? (lambda (file stat) - (not (string-contains file ".git"))))) - (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda _ - (invoke "zig" "build" "-Doptimize=ReleaseSafe") - ;; Build cartridge FFIs - (for-each (lambda (cart) - (chdir (string-append "cartridges/" cart "/ffi")) - (invoke "zig" "build") - (chdir "../../..")) - '("fleet-mcp" "nesy-mcp" "database-mcp" "agent-mcp")))) - (replace 'check - (lambda _ - (invoke "just" "test"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/share/doc")) - (copy-file "README.adoc" - (string-append out "/share/doc/README.adoc")))))))) - (native-inputs - (list - ;; Build-time: Idris2 for ABI type-checking, Zig for FFI compilation - ;; Note: idris2 and zig packages may need custom channels - )) - (inputs (list)) - (home-page "https://github.com/hyperpolymath/boj-server") - (synopsis "Formally verified capability catalogue for developer server protocols") - (description "Bundle of Joy Server provides a unified, formally verified catalogue -of developer server capabilities. AI goes to ONE place instead of hunting across -dozens of MCP/LSP/etc servers. Uses Idris2 for formal proofs (ABI), Zig for -zero-overhead native execution (FFI), and zig for triple API adapters.") - (license (list mpl2.0)))