Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ if has asdf; then
use asdf
fi

# Load Guix shell if guix.scm exists
if has guix && [ -f guix.scm ]; then
use guix
fi

# Project environment variables
export PROJECT_NAME="systemet"
export RSR_TIER="infrastructure"
Expand Down
5 changes: 2 additions & 3 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
git clone https://github.com/hyperpolymath/systemet.git
cd systemet

# Using Guix (recommended for reproducibility)
guix shell -D -f guix.scm
# Using asdf/mise (.tool-versions is the pin source)
mise install # or: asdf install

# Or using toolbox/distrobox
toolbox create systemet-dev
Expand Down Expand Up @@ -49,7 +49,6 @@ systemet/
├── MAINTAINERS.md
├── README.adoc
├── SECURITY.md
├── guix.scm # Guix package — primary (Perimeter 1)
└── Justfile # Task runner (Perimeter 1)
```

Expand Down
9 changes: 4 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,10 @@ deps/
build/
dist/

# /build/ is a tracked config directory (build orchestration: contractile.just,
# guix.scm, just/*.just, etc.) introduced in chore/root-cleanup. Whitelist
# root-level /build/ so its contents are tracked. The blanket `build/` rule
# above still ignores any nested `build/` directories (e.g. Rust crate
# target/build/) — only the root-level path is exempt.
# Root-level /build/ is exempt from the blanket `build/` ignore above so that
# tracked task-runner modules (e.g. build/just/proofs.just) stay tracked. The
# Guix/contractile scaffolding that used to live here was removed; nested
# build/ directories (e.g. Rust crate target/build/) remain ignored.
!/build/
!/build/**

Expand Down
29 changes: 10 additions & 19 deletions .machine_readable/6a2/PLAYBOOK.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,14 @@ enforcement-workflow = ".github/workflows/estate-rules.yml"
# 0-AI-MANIFEST.a2ml AI agent work-allocation policy
# LICENSE Repo license (root-bound by convention)
# CHANGELOG.md One of the recognised .md exceptions (see below)
# Justfile Task runner — thin, imports per-section files from build/just/
# Justfile Task runner — self-contained (build/ scaffolding retired;
# build/just/proofs.just returns with the proof gate)
# coordination.k9 Repo-local session binding

# === Required directories ===
# .github/ CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, workflows/
# .machine_readable/ AI manifests (0.1-AI-MANIFEST.a2ml), 6a2/ checkpoints,
# contractiles/, configs/, anchors/, policies/, scripts/, self-validating/
# build/ contractile.just, guix.scm, Containerfile,
# just/*.just (Justfile section imports)
# docs/ onboarding/, status/, architecture/, governance/ (all .adoc)
# session/ dispatch.sh, custom-checks.k9, local-hooks.sh
# src/ Project source (Idris2 ABI under abi/, Zig FFI under ffi/)
Expand All @@ -89,22 +88,14 @@ enforcement-workflow = ".github/workflows/estate-rules.yml"
#
# Enforcement: `scripts/check-no-vlang.sh`.

# === Justfile structure (post-split) ===
# The root Justfile is thin — it holds `set` directives, project metadata
# variables, and the `default`/`help`/`info` recipes. Each major section
# lives in its own file under build/just/ and is brought in via `import?`.
#
# Imported sections (in the canonical split):
# build/just/init.just INIT recipe (template bootstrap)
# build/just/assess.just self-assess + verify (OpenSSF compliance)
# build/just/validate.just validate-rsr/state/ai-install + aggregate
# build/just/proofs.just proof-check-{all,idris2,lean4,agda,coq},
# proof-scan-dangerous, proof-status
# build/just/groove.just Groove protocol setup (after zig removed)
#
# Daily-use recipes (BUILD, TEST, LINT, RUN, DEPS, DOCS, CONTAINER, CI,
# SECURITY, STATE, GUIX, MATRIX, VERSION CONTROL, UTILITIES, SESSION)
# stay in the root Justfile where users expect to find them.
# === Justfile structure ===
# The root Justfile is self-contained. The template's build/just/ section
# split (init/assess/validate/groove) and the Guix scaffolding were retired
# in chore/remove-guix-build-scaffolding — those recipes served the RSR
# template lifecycle, not this repo. The one section that returns is
# FORMAL VERIFICATION: build/just/proofs.just (proof-check-{all,lean4,…},
# proof-scan-dangerous, proof-status) is reintroduced by the proof-gate PR
# and imported via `import?`.

# === 5-PR cleanup pattern ===
# Apply these branches (in order) to bring a non-conforming downstream repo
Expand Down
3 changes: 1 addition & 2 deletions .machine_readable/root-allow.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ CHANGELOG.md
CITATION.cff # citation metadata (surfaced at root by #96)

# ─── Build entry points (must live at root for their tooling) ────────────────
Justfile # delegates phases to build/just/*.just
Justfile # task runner entry point (self-contained since build/ scaffolding removal)
coordination.k9 # repo-local session binding (template-mandated)
abi.ipkg # Idris2 package for the ABI seam; sourcedir=src/interface (estate canon: root-level *-abi.ipkg). Single case-consistent src/interface/Abi/ dir. Typecheck: `idris2 --typecheck abi.ipkg`.

Expand All @@ -47,7 +47,6 @@ sonar-project.properties # SonarCloud analysis config; the SonarQube scan acti
.github/ # CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, workflows/
.machine_readable/ # AI manifests, contractiles, custom-format configs
.well-known/
build/ # contractile.just, setup.sh, guix.scm, .guix-channel, Containerfile
ci/ # .gitlab-ci.yml, .pre-commit-config.yaml (root shims if tools require)
docs/ # onboarding/, status/, governance/, ...
docs-template/ # template-only: scaffolding docs copied into new repos
Expand Down
9 changes: 3 additions & 6 deletions .machine_readable/scripts/lifecycle/install-tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@
#
# install-tools.sh — Developer toolchain installer
#
# Detects and installs the required project toolchain (Guix or asdf).
# Detects and installs the required project toolchain (asdf).

set -euo pipefail

echo "=== RSR Toolchain Installer ==="

if [ -f "guix.scm" ] && command -v guix &>/dev/null; then
echo "Guix detected. Verifying development shell..."
guix shell -f guix.scm -- true && echo "Guix shell verified."
elif [ -f ".tool-versions" ] && command -v asdf &>/dev/null; then
if [ -f ".tool-versions" ] && command -v asdf &>/dev/null; then
echo "asdf detected. Installing plugins and tools..."
while read -r line; do
plugin=$(echo "$line" | awk '{print $1}')
asdf plugin add "$plugin" || true
done < .tool-versions
asdf install
else
echo "No standard toolchain (Guix/asdf) detected or installed."
echo "No standard toolchain (asdf) detected or installed."
echo "Please refer to README.adoc for manual setup instructions."
fi

Expand Down
6 changes: 3 additions & 3 deletions EXPLAINME.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@ infrastructure being part of the theory.
How this is implemented:

* `0-AI-MANIFEST.a2ml` is the AI-agent entry point; `.machine_readable/` holds
metadata, policy, contractiles, anchors, and agent-readable state; `just validate`
checks repository shape; `AFFIRMATION.adoc` is the dated honesty snapshot;
`AUDIT.adoc` is the release gate.
metadata, policy, contractiles, anchors, and agent-readable state; CI estate
workflows check repository shape; `AFFIRMATION.adoc` is the dated honesty
snapshot; `AUDIT.adoc` is the release gate.

Caveat:

Expand Down
53 changes: 1 addition & 52 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ set shell := ["bash", "-uc"]
set dotenv-load := true
set positional-arguments := true

# Import auto-generated contractile recipes (must-check, trust-verify, etc.)
# Re-generate with: contractile gen-just
import? "build/contractile.just"

# Project metadata — customize these
project := "rsr-template-repo"
OWNER := "hyperpolymath"
Expand Down Expand Up @@ -58,29 +54,6 @@ info:
invariant-path *ARGS:
./scripts/invariant-path.sh {{ARGS}}

# ═══════════════════════════════════════════════════════════════════════════════
# INIT — see build/just/init.just
# ═══════════════════════════════════════════════════════════════════════════════

import? "build/just/init.just"

# >>> container-module (three-tier: OCI · portable engine · stapeln) >>>
# Self-contained. Remove the entire block — this and the import — with `just no-container`.
import? "build/just/container.just"
# <<< container-module <<<

# ═══════════════════════════════════════════════════════════════════════════════
# GROOVE PROTOCOL — see build/just/groove.just
# ═══════════════════════════════════════════════════════════════════════════════

import? "build/just/groove.just"

# ═══════════════════════════════════════════════════════════════════════════════
# PROJECT SELF-ASSESSMENT + OPENSSF COMPLIANCE — see build/just/assess.just
# ═══════════════════════════════════════════════════════════════════════════════

import? "build/just/assess.just"

# ═══════════════════════════════════════════════════════════════════════════════
# BUILD & COMPILE
# ═══════════════════════════════════════════════════════════════════════════════
Expand Down Expand Up @@ -419,12 +392,6 @@ sbom:
@mkdir -p docs/security
@command -v syft >/dev/null && syft . -o spdx-json > docs/security/sbom.spdx.json || echo "syft not found"

# ═══════════════════════════════════════════════════════════════════════════════
# VALIDATION & COMPLIANCE — see build/just/validate.just
# ═══════════════════════════════════════════════════════════════════════════════

import? "build/just/validate.just"

# ═══════════════════════════════════════════════════════════════════════════════
# STATE MANAGEMENT
# ═══════════════════════════════════════════════════════════════════════════════
Expand All @@ -440,18 +407,6 @@ state-touch:
state-phase:
@grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/6a2/STATE.a2ml 2>/dev/null | head -1 || echo "unknown"

# ═══════════════════════════════════════════════════════════════════════════════
# GUIX
# ═══════════════════════════════════════════════════════════════════════════════

# Enter Guix development shell (primary)
guix-shell:
guix shell -D -f guix.scm

# Build with Guix
guix-build:
guix build -f guix.scm

# ═══════════════════════════════════════════════════════════════════════════════
# HYBRID AUTOMATION
# ═══════════════════════════════════════════════════════════════════════════════
Expand All @@ -462,7 +417,7 @@ automate task="all":
case "{{task}}" in
all) just fmt && just lint && just test && just docs && just state-touch ;;
cleanup) just clean && find . -name "*.orig" -delete && find . -name "*~" -delete ;;
update) just deps && just validate ;;
update) just deps && just validate-claude-md && just validate-coapt ;;
*) echo "Unknown: {{task}}. Use: all, cleanup, update" && exit 1 ;;
esac

Expand Down Expand Up @@ -589,12 +544,6 @@ help-me:
@echo ""
@echo "Include the output of 'just doctor' in your report."

# ═══════════════════════════════════════════════════════════════════════════════
# FORMAL VERIFICATION (PROOFS) — see build/just/proofs.just
# ═══════════════════════════════════════════════════════════════════════════════

import? "build/just/proofs.just"

# ═══════════════════════════════════════════════════════════════════════════════
# SESSION MANAGEMENT (THIN BINDINGS TO CENTRAL STANDARDS)
# ═══════════════════════════════════════════════════════════════════════════════
Expand Down
22 changes: 0 additions & 22 deletions build/.guix-channel

This file was deleted.

75 changes: 0 additions & 75 deletions build/contractile.just

This file was deleted.

Loading
Loading