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
6 changes: 3 additions & 3 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
git clone https://github.com/hyperpolymath/bofj-kitt.git
cd bofj-kitt

# Using Nix (recommended for reproducibility)
nix develop
# Using Guix (recommended for reproducibility)
guix develop

# Or using toolbox/distrobox
toolbox create bofj-kitt-dev
Expand Down Expand Up @@ -45,7 +45,7 @@ bofj-kitt/
├── MAINTAINERS.md
├── README.adoc
├── SECURITY.md
├── flake.nix # Nix flake — fallback (Perimeter 1)
├── flake.guix # Guix flake — fallback (Perimeter 1)
├── guix.scm # Guix package — primary (Perimeter 1)
└── Justfile # Task runner (Perimeter 1)
```
Expand Down
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

## Banned Languages

- No TypeScript (use ReScript)
- No TypeScript (use AffineScript)
- No Node.js / npm / bun (use Deno)
- No Go (use Rust)
- No Python (use Julia or Rust)
Expand Down
4 changes: 2 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ updates:
schedule:
interval: "weekly"

# Nix flakes
- package-ecosystem: "nix"
# Guix flakes
- package-ecosystem: "guix"
directory: "/"
schedule:
interval: "weekly"
2 changes: 1 addition & 1 deletion .github/workflows/governance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# in hyperpolymath/standards instead of carrying per-repo copies.
#
# Replaces the per-repo governance scaffolding removed in the same commit:
# quality.yml, guix-nix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml,
# quality.yml, guix-guix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml,
# security-policy.yml, rsr-antipattern.yml, wellknown-enforcement.yml,
# workflow-linter.yml
#
Expand Down
4 changes: 2 additions & 2 deletions .machine_readable/6a2/META.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ adrs = [
build-tool = "just"
container-runtime = "podman"
ci-platform = "github-actions"
package-manager = "guix" # guix | nix | cargo | mix
package-manager = "guix" # guix | guix | cargo | mix

[maintenance-axes]
scoping-first = true
Expand All @@ -50,7 +50,7 @@ perfective-source = "axis-1 honest state after corrective/adaptive updates"
[axis-3-audit-rules]
audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"
compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"
drift-risk-example = "single exception broadening into policy violation (e.g. ReScript->TypeScript spread)"
drift-risk-example = "single exception broadening into policy violation (e.g. AffineScript->TypeScript spread)"
effects-evidence = "benchmark execution/results and maintainer status dialogue/review"

[design-rationale]
Expand Down
4 changes: 2 additions & 2 deletions .machine_readable/6a2/PLAYBOOK.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ enforcement-workflow = ".github/workflows/estate-rules.yml"
# .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/, svc/
# build/ contractile.just, flake.nix, guix.scm, Containerfile,
# build/ contractile.just, flake.guix, guix.scm, Containerfile,
# just/*.just (Justfile section imports)
# docs/ onboarding/, status/, architecture/, governance/ (all .adoc)
# session/ dispatch.sh, custom-checks.k9, local-hooks.sh
Expand Down Expand Up @@ -103,7 +103,7 @@ enforcement-workflow = ".github/workflows/estate-rules.yml"
# build/just/groove.just Groove protocol setup (after zig removed)
#
# Daily-use recipes (BUILD, TEST, LINT, RUN, DEPS, DOCS, CONTAINER, CI,
# SECURITY, STATE, GUIX/NIX, MATRIX, VERSION CONTROL, UTILITIES, SESSION)
# SECURITY, STATE, GUIX/GUIX, MATRIX, VERSION CONTROL, UTILITIES, SESSION)
# stay in the root Justfile where users expect to find them.

# === 5-PR cleanup pattern ===
Expand Down
6 changes: 3 additions & 3 deletions .machine_readable/ai/PLACEHOLDERS.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ sed -i "s/{{CURRENT_DATE}}/$(date +%Y-%m-%d)/g" $(grep -rl '{{CURRENT_DATE}}' .)

| Placeholder | Description | Example | Files |
|---|---|---|---|
| `{{PROJECT_NAME}}` | Human-readable project name | `My Project` | SECURITY.md, CODE_OF_CONDUCT.md, TOPOLOGY.md, STATE.a2ml, Justfile, GOVERNANCE.md, MAINTAINERS.md, flake.nix, devcontainer.json |
| `{{PROJECT_DESCRIPTION}}` | One-line description | `A tool for X` | flake.nix |
| `{{PROJECT_NAME}}` | Human-readable project name | `My Project` | SECURITY.md, CODE_OF_CONDUCT.md, TOPOLOGY.md, STATE.a2ml, Justfile, GOVERNANCE.md, MAINTAINERS.md, flake.guix, devcontainer.json |
| `{{PROJECT_DESCRIPTION}}` | One-line description | `A tool for X` | flake.guix |
| `{{REPO}}` | Repository name (slug) | `my-project` | CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, cliff.toml |
| `{{OWNER}}` | GitHub/GitLab org or username | `my-org` | SPDX headers, CONTRIBUTING.md, SECURITY.md, GOVERNANCE.md, MAINTAINERS.md, CODEOWNERS, mirror.yml, cliff.toml |
| `{{FORGE}}` | Git forge domain | `github.com` | CONTRIBUTING.md |
Expand Down Expand Up @@ -131,7 +131,7 @@ After replacing all placeholders, verify none remain:
```bash
grep -rn '{{' . --include='*.md' --include='*.adoc' --include='*.a2ml' \
--include='*.scm' --include='*.idr' --include='*.res' \
--include='Justfile' --include='*.nix' --include='*.toml' --include='*.yml' \
--include='Justfile' --include='*.guix' --include='*.toml' --include='*.yml' \
--include='*.yaml' --include='*.hs' --include='*.ncl' --include='*.txt' \
--include='*.json' --include='Containerfile' --include='dep5' \
| grep -v 'PLACEHOLDERS.md' | grep -v 'node_modules'
Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ compliance-seams-check = true
exception-register-required = true
exception-bounded-scope-required = true
policy-drift-contamination-check = true
example-drift-risk = "single TypeScript exception causing broad ReScript->TypeScript migration"
example-drift-risk = "single TypeScript exception causing broad AffineScript->TypeScript migration"
compliance-tooling = "panic-attack"
effects-tooling = "ecological checking with sustainabot guidance"

Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/root-allow.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ coordination.k9 # repo-local session binding (template-mandated)
.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, flake.{nix,lock}, guix.scm, .guix-channel, Containerfile
build/ # contractile.just, setup.sh, flake.{guix,lock}, guix.scm, .guix-channel, Containerfile
ci/ # .gitlab-ci.yml, .pre-commit-config.yaml (root shims if tools require)
docs/ # onboarding/, status/, governance/, ...
session/ # dispatch.sh, custom-checks.k9, local-hooks.sh
Expand Down
4 changes: 2 additions & 2 deletions 0-AI-MANIFEST.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ agents = [
{ name = "CLAUDE", role = "repo-local implementation, CI/CD, formal verification, kit tooling" },
{ name = "CHATGPT", role = "prose, papers, publication review, standards docs, outreach drafts, letters" },
{ name = "GEMINI", role = "estate audits, cross-repo sweeps, long-context triage, pattern detection" },
{ name = "VIBE", role = "UI/frontend, PanLL panels, ReScript components, theming, rapid prototyping" },
{ name = "VIBE", role = "UI/frontend, PanLL panels, AffineScript components, theming, rapid prototyping" },
]

[policy]
Expand All @@ -30,7 +30,7 @@ items = [
{ agent = "CLAUDE", task = "repo-local implementation, CI/CD, formal verification, kit tooling" },
{ agent = "CHATGPT", task = "prose, papers, publication review, standards docs, outreach drafts, letters" },
{ agent = "GEMINI", task = "estate audits, cross-repo sweeps, long-context triage, pattern detection" },
{ agent = "VIBE", task = "UI/frontend, PanLL panels, ReScript components, theming, rapid prototyping" },
{ agent = "VIBE", task = "UI/frontend, PanLL panels, AffineScript components, theming, rapid prototyping" },
]

<!-- BEGIN requires-initialisation -->
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
== Changelog

All notable changes to this project will be documented in this file.

The format is based on https://keepachangelog.com/en/1.1.0/[Keep a
Changelog], and this project adheres to
https://semver.org/spec/v2.0.0.html[Semantic Versioning].

=== [Unreleased]
11 changes: 0 additions & 11 deletions CHANGELOG.md

This file was deleted.

9 changes: 9 additions & 0 deletions CONTRIBUTING.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
== Contributing

[arabic]
. Fork the repository
. Create a feature branch
. Ensure SPDX headers on all files
. Submit a pull request

*Author:* Jonathan D.A. Jewell j.d.a.jewell@open.ac.uk
9 changes: 0 additions & 9 deletions CONTRIBUTING.md

This file was deleted.

10 changes: 5 additions & 5 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ build *args:
# Examples:
# cargo build {{args}} # Rust
# mix compile {{args}} # Elixir
# deno task build {{args}} # Deno/ReScript
# deno task build {{args}} # Deno/AffineScript
@echo "Build complete"

# Build in release mode with optimizations
Expand Down Expand Up @@ -557,7 +557,7 @@ state-phase:
@grep -oP 'phase\s*=\s*"\K[^"]+' .machine_readable/STATE.a2ml 2>/dev/null | head -1 || echo "unknown"

# ═══════════════════════════════════════════════════════════════════════════════
# GUIX & NIX
# GUIX & GUIX
# ═══════════════════════════════════════════════════════════════════════════════

# Enter Guix development shell (primary)
Expand All @@ -568,9 +568,9 @@ guix-shell:
guix-build:
guix build -f guix.scm

# Enter Nix development shell (fallback)
nix-shell:
@if [ -f "flake.nix" ]; then nix develop; else echo "No flake.nix"; fi
# Enter Guix development shell (fallback)
guix-shell:
@if [ -f "flake.guix" ]; then guix develop; else echo "No flake.guix"; fi

# ═══════════════════════════════════════════════════════════════════════════════
# HYBRID AUTOMATION
Expand Down
129 changes: 129 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
https://www.mozilla.org/MPL/2.0/[image:https://img.shields.io/badge/License-MPL--2.0-blue.svg[License:
MPL-2.0]]
https://creativecommons.org/licenses/by-sa/4.0/[image:https://img.shields.io/badge/Docs-CC--BY--SA--4.0-lightgrey.svg[Docs:
CC-BY-SA-4.0]]

== bofj-kitt

*Shared Developer Environment Extension Kit* — the "`SuperChainsaw`" for
the *BoJ (Box of Justice) server*.

____
*Status: pre-alpha scaffold.* This repository has its identity,
governance, and CI in place, but *no product code yet*. What the kit
will do is specified in link:docs/status/ROADMAP.adoc[the roadmap]; how
it got to this honest baseline is recorded in the
link:docs/reports/audit/repo-assessment-2026-07-16.adoc[repo
assessment].
____

'''''

=== What it is

bofj-kitt is the hyperpolymath estate’s shared *developer-environment
layer*. The estate runs on the
https://github.com/hyperpolymath/standards[RSR (Rhodium Standard
Repository)] framework — every repo carries the same governance, session
protocols, and machine-readable state. bofj-kitt’s job is to make that
environment *provisionable and extensible from one place* instead of
copy-pasted per repo:

* *provision* an estate-compliant developer environment (devcontainer /
Guix / toolchains — the scaffolding under
link:.devcontainer/[`+.devcontainer/+`],
link:container/[`+container/+`], and link:build/[`+build/+`]);
* *wire in* the estate session protocols (the dispatcher under
link:session/[`+session/+`]; see EXPLAINME.adoc);
* *register* the environment with a *BoJ server* — the estate’s verified
MCP gateway — over the Groove service-discovery manifest. The
link:.github/workflows/boj-build.yml[`+boj-build+`] workflow already
posts build events to a BoJ server’s `+ssg-mcp+` cartridge when
`+BOJ_SERVER_URL+` is set.

The BoJ server itself lives at
https://github.com/hyperpolymath/boj-server[hyperpolymath/boj-server].

=== Why "`SuperChainsaw`"?

A chainsaw for a developer environment: one tool that cuts through the
repetitive work of standing up, extending, and connecting a compliant
dev setup across the estate — rather than reproducing it by hand in
every repository.

=== Status & honesty

This repo was scaffolded from the RSR template and has been brought to a
*truthful baseline*: one consistent identity, governance CI that passes
its own estate rules, and a committed assessment + roadmap. It
deliberately does *not* claim working features it does not have.

* *CRG grade: X (Untested)* — see
link:docs/status/READINESS.adoc[READINESS]. No product components exist
yet, so there is nothing to grade.
* The vendored copy of another project (AffineScript) and an
uninstantiated template ABI/FFI have been removed; see the
link:docs/reports/audit/repo-assessment-2026-07-16.adoc[assessment] for
the full before/after.

=== The journey (roadmap)

[width="100%",cols="50%,50%",options="header",]
|===
|Milestone |Goal
|*M0* _(this pass)_ |Truthful identity, green governance CI, committed
assessment + roadmap

|*M1* |Finish placeholder-token fills; restore a full SECURITY policy;
curate remaining template docs

|*M2* |Product spec — define what an "`extension`" is; the kit’s first
surfaces; the BoJ integration contract

|*M3* |Choose the implementation language; re-add a real end-to-end
workflow

|*M4* |First shippable kit capability + per-capability tests → CRG *D*

|*M5* |Live BoJ-server integration + dogfooding → CRG *C*, then external
targets → *B*
|===

Full detail: docs/status/ROADMAP.adoc.

=== Repository shape

* link:session/[`+session/+`] — session-protocol dispatcher (integration
layer over the central `+standards+` repo).
* link:.machine_readable/[`+.machine_readable/+`] — machine-readable
state, AI manifests, contractiles, and estate metadata (`+CLADE.a2ml+`
holds this repo’s registry identity).
* link:.github/workflows/[`+.github/workflows/+`] — estate governance CI
(root-shape, OpenSSF compliance, dogfood gate, Hypatia scan, Scorecard,
secret scanner, BoJ build trigger, multi-forge mirror).
* link:docs/[`+docs/+`] — governance, status, onboarding, and reports
(AsciiDoc; the estate does not permit `+.md+` under `+docs/+`).
* link:verification/[`+verification/+`] — a five-prover verification
skeleton (Idris2, Coq, Lean4, Agda, TLA+) awaiting product-specific
proofs.

=== Building & running

There is nothing to build yet — the implementation language is chosen at
M3. The link:Justfile[`+Justfile+`] exposes the estate’s task surface
(session commands, CRG grading, changelog, governance checks); product
`+build+`/`+test+`/`+run+` recipes are wired once the kit’s first
capability lands (M2–M3).

=== Contributing

See CONTRIBUTING.md. This is an early-stage estate repo; the most useful
contributions right now are on the product spec (M2) — what a BoJ
dev-environment "`extension`" should be.

=== License

* *Code:* link:LICENSE[MPL-2.0].
* *Documentation:* CC-BY-SA-4.0.

See link:LICENSES/[`+LICENSES/+`] for the full texts.
Loading
Loading