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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 40 additions & 0 deletions satellites/a2mliser/.claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# a2mliser — Project Instructions

## Overview

Add cryptographic attestation to any markup via A2ML

**Status:** scaffold
**Priority in -iser family:** —
**Part of:** https://github.com/hyperpolymath/iseriser (-iser ecosystem)

## Architecture

All -iser projects follow the same architecture:
- **Manifest** (`a2mliser.toml`) — user describes WHAT they want
- **Idris2 ABI** (`src/abi/` or `src/interface/abi/`) — formal proofs of interface correctness
- **Zig FFI** (`ffi/zig/` or `src/interface/ffi/`) — C-ABI bridge to target language
- **Codegen** (`src/codegen/`) — generates target language wrapper code
- **Rust CLI** (`src/main.rs`) — orchestrates everything

## Build & Test

```bash
cargo build --release
cargo test
```

## Key Design Decisions

- Follows hyperpolymath ABI-FFI standard (Idris2 ABI, Zig FFI)
- MPL-2.0 license (code) + CC-BY-SA-4.0 (docs); full texts in LICENSES/
- RSR (Rhodium Standard Repository) template
- Author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>

## Integration Points

- **iseriser**: Meta-framework that can generate new -iser scaffolding
- **typedqliser**: #1 priority — formal type safety for query languages
- **chapeliser**: #2 priority — distributed computing acceleration
- **verisimiser**: #3 priority — database octad augmentation
- **squeakwell**: Database recovery via cross-modal constraint propagation
32 changes: 32 additions & 0 deletions satellites/a2mliser/.devcontainer/Containerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
#
# Dev Container image for {{PROJECT_NAME}}
# Base: Chainguard Wolfi (minimal, supply-chain-secure)
# Build: podman build -t {{PROJECT_NAME}}-dev -f .devcontainer/Containerfile .

FROM cgr.dev/chainguard/wolfi-base:latest

# Install common development tools
RUN apk update && apk add --no-cache \
bash \
curl \
git \
openssh-client \
ca-certificates \
build-base \
posix-libc-utils \
shadow \
&& rm -rf /var/cache/apk/*

# Create non-root dev user (matches devcontainer.json remoteUser)
RUN groupadd -g 1000 nonroot || true \
&& useradd -m -u 1000 -g 1000 -s /bin/bash nonroot || true

# Set workspace directory
WORKDIR /workspaces/{{PROJECT_NAME}}

# Default shell
ENV SHELL=/bin/bash

USER nonroot
27 changes: 27 additions & 0 deletions satellites/a2mliser/.devcontainer/README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// SPDX-License-Identifier: CC-BY-SA-4.0
= Dev Container Usage
:author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>

== Overview

This dev container uses `cgr.dev/chainguard/wolfi-base` with git, curl, bash, and just pre-installed. Dev container features add git, just, and nickel automatically.

== VS Code (Local)

. Install the *Dev Containers* extension (`ms-vscode-remote.remote-containers`).
. Set `dev.containers.dockerPath` to `podman` in VS Code settings.
. Open the repo folder, then choose **Reopen in Container** from the command palette.

== GitHub Codespaces

. From the repository on GitHub, click **Code > Codespaces > New codespace**.
. The container builds automatically from this configuration.

== Gitpod

. Prefix the repo URL with `https://gitpod.io/#` to launch a workspace.
. Gitpod reads `devcontainer.json` and builds the environment.

== Customization

Replace `{{PROJECT_NAME}}` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.
69 changes: 69 additions & 0 deletions satellites/a2mliser/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
//
// Dev Container configuration for {{PROJECT_NAME}}
// Works with: VS Code Dev Containers, GitHub Codespaces, Gitpod
// Container runtime: Podman (recommended) or any OCI-compliant runtime
{
"name": "{{PROJECT_NAME}}",

"build": {
"dockerfile": "Containerfile",
"context": ".."
},

"features": {
"ghcr.io/devcontainers/features/git:1": {
"ppa": false,
"version": "latest"
},
"ghcr.io/jdx/devcontainer-features/just:1": {},
"ghcr.io/nickel-lang/devcontainer-feature:0": {}
},

"postCreateCommand": "just deps",

"remoteUser": "nonroot",

"containerEnv": {
"EDITOR": "code --wait",
"LANG": "C.UTF-8"
},

"customizations": {
"vscode": {
"extensions": [
"EditorConfig.EditorConfig",
"eamodio.gitlens",
"streetsidesoftware.code-spell-checker",
"timonwong.shellcheck",
"tamasfe.even-better-toml",
"skellock.just",
"redhat.vscode-yaml",
"DavidAnson.vscode-markdownlint",
"asciidoctor.asciidoctor-vscode",
"usernamehw.errorlens"
],
"settings": {
"editor.formatOnSave": true,
"editor.insertSpaces": true,
"editor.tabSize": 2,
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"[makefile]": {
"editor.insertSpaces": false
}
}
},
"codespaces": {
"openFiles": [
"README.adoc"
]
}
},

"forwardPorts": [],

"shutdownAction": "stopContainer"
}
65 changes: 65 additions & 0 deletions satellites/a2mliser/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# RSR-template-repo - Editor Configuration
# https://editorconfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.adoc]
trim_trailing_whitespace = false

[*.rs]
indent_size = 4

[*.ex]
indent_size = 2

[*.exs]
indent_size = 2

[*.zig]
indent_size = 4

[*.ada]
indent_size = 3

[*.adb]
indent_size = 3

[*.ads]
indent_size = 3

[*.hs]
indent_size = 2

[*.res]
indent_size = 2

[*.resi]
indent_size = 2

[*.ncl]
indent_size = 2

[*.rkt]
indent_size = 2

[*.scm]
indent_size = 2

[*.nix]
indent_size = 2

[Justfile]
indent_style = space
indent_size = 4

27 changes: 27 additions & 0 deletions satellites/a2mliser/.envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# SPDX-License-Identifier: MPL-2.0
# Activate development environment
# Install direnv: https://direnv.net/

# Load .tool-versions if asdf is available
if has asdf; then
use asdf
fi

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

# Load Nix flake if flake.nix exists
if has nix && [ -f flake.nix ]; then
use flake
fi

# Project environment variables
export PROJECT_NAME="{{PROJECT_NAME}}"
export RSR_TIER="infrastructure"
# export DATABASE_URL="..."
# export API_KEY="..."

# Source .env if it exists (gitignored)
dotenv_if_exists
55 changes: 55 additions & 0 deletions satellites/a2mliser/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: MPL-2.0
# RSR-compliant .gitattributes

* text=auto eol=lf

# Source
*.rs text eol=lf diff=rust
*.ex text eol=lf diff=elixir
*.exs text eol=lf diff=elixir
*.jl text eol=lf
*.res text eol=lf
*.resi text eol=lf
*.ada text eol=lf diff=ada
*.adb text eol=lf diff=ada
*.ads text eol=lf diff=ada
*.hs text eol=lf
*.chpl text eol=lf
*.scm text eol=lf
*.a2ml text eol=lf linguist-language=TOML
*.ncl text eol=lf
*.nix text eol=lf

# Docs
*.md text eol=lf diff=markdown
*.adoc text eol=lf
*.txt text eol=lf

# Data
*.json text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.toml text eol=lf

# Config
.gitignore text eol=lf
.gitattributes text eol=lf
Justfile text eol=lf
Makefile text eol=lf
Containerfile text eol=lf

# Scripts
*.sh text eol=lf

# Binary
*.png binary
*.jpg binary
*.gif binary
*.pdf binary
*.woff2 binary
*.zip binary
*.gz binary

# Lock files
Cargo.lock text eol=lf -diff
flake.lock text eol=lf -diff
Loading
Loading