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
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .cicd-hygiene-allow
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Code-hygiene gate allowlist (consumed by cicd-suite actions/code-hygiene-check).
# Patterns are git pathspec excludes, applied to both the debt-marker scan and
# the proof-circumvention scan.
#
# The two entries below are TEMPLATE SCAFFOLDS, not implementation debt:
# their TODOs are the instantiation seams every minted repo is meant to fill
# in (entrypoint command, e2e sections). Excluding them keeps the gate's
# debt-tracking signal clean for real source in instantiated repos, which
# inherit this file. If an instantiated repo later owns genuine debt in
# these paths, resolve or issue-link it there — do not widen this list.
build/container/entrypoint.sh
tests/e2e.sh
47 changes: 0 additions & 47 deletions .claude/CLAUDE.md

This file was deleted.

24 changes: 16 additions & 8 deletions .machine_readable/ai/.clinerules → .clinerules
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} (hyperpolymath) <{{AUTHOR_EMAIL}}>
# Authoritative source: docs/AI-CONVENTIONS.md
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
# Authoritative source: docs/practice/AI-CONVENTIONS.adoc

# STARTUP: Read 0-AI-MANIFEST.a2ml first, then .machine_readable/STATE.a2ml.
# STARTUP: Read the repo deed (*_chora.deed at the repo root) first, then .machine_readable/descriptiles/STATE.a2ml.

# LICENSE
# All original code: MPL-2.0.
# Never AGPL-3.0. MPL-2.0 only as platform-required fallback.
# SPDX header required on every source file.
# Copyright: {{AUTHOR}} (hyperpolymath) <{{AUTHOR_EMAIL}}>
# Copyright: Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>

# STATE FILES (.machine_readable/ ONLY)
# Never create in repo root: STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml,
Expand All @@ -23,14 +23,22 @@
# Lean: sorry
# Rust: transmute (unless FFI with // SAFETY: comment)

# JS/TS RUNTIMES — ordered preference, reach for the first that can do the job
# (standards/3-practice/LANGUAGE-POLICY.adoc section 1, ruled 2026-07-29)
# 1. Bun default for all new work; runs .ts directly, no build step
# 2. Deno existing Deno projects are grandfathered; prefer over pnpm/npm
# 3. pnpm only where an upstream toolchain needs a node_modules layout
# 4. npm last resort; permitted, never preferred — a noted decision
# TypeScript IS PERMITTED under Bun. The old "use ReScript instead" rule is
# RETIRED: ReScript is no longer used in this estate, so that rule named a dead
# alternative. Do NOT migrate Bun to Deno — that inverts the current ruling.

# BANNED LANGUAGES
# TypeScript -> ReScript
# Node.js / npm / bun -> Deno
# Go -> Rust
# Python -> Julia or Rust

# CONTAINERS
# Runtime: Podman (never Docker).
# Runtime: Podman first.
# File: Containerfile (never Dockerfile).
# Base: cgr.dev/chainguard/wolfi-base:latest or cgr.dev/chainguard/static:latest.

Expand All @@ -39,5 +47,5 @@
# FFI: Zig with C ABI (src/interface/ffi/).
# Headers: src/interface/generated/.

# BUILD: Use just (justfile) for all tasks.
# BUILD: Use just (Justfile) for all tasks.
# STYLE: Descriptive names. Document all files. SPDX headers everywhere.
26 changes: 0 additions & 26 deletions .conflow.yaml

This file was deleted.

54 changes: 54 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
# Authoritative source: docs/practice/AI-CONVENTIONS.adoc

# Read the repo deed (*_chora.deed in the repo root) FIRST: canonical file locations
# live in its (ply ...) canonical-locations clauses.

# LICENSE
# All original code: MPL-2.0 (SPDX header required on every file).
# Copyright: Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>

# STATE FILES
# .deed metadata files go in .machine_readable/ ONLY.
# Never create STATE.a2ml, META.a2ml, ECOSYSTEM.a2ml, AGENTIC.a2ml, NEUROSYM.a2ml, or PLAYBOOK.a2ml.

# BANNED PATTERNS
# Idris2: believe_me, assert_total, assert_smaller, unsafePerformIO
# Haskell: unsafeCoerce, unsafePerformIO, undefined, error
# OCaml: Obj.magic, Obj.repr, Obj.obj
# Coq: Admitted
# Lean: sorry
# Rust: transmute (unless FFI with // SAFETY: comment)

# JS RUNTIMES — ordered preference, reach for the first that can do the job
# (standards/3-practice/LANGUAGE-POLICY.adoc section 1, ruled 2026-07-29)
# 1. Bun default for all new work; runs .ts directly, no build step
# 2. Deno existing Deno projects are grandfathered; prefer over pnpm/npm
# 3. pnpm only where an upstream toolchain needs a node_modules layout
# 4. npm last resort; permitted, never preferred — a noted decision
# TypeScript IS PERMITTED under Bun. The old "use ReScript instead" rule is
# RETIRED: ReScript is no longer used in this estate, so that rule named a dead
# alternative. Do NOT migrate Bun to Deno — that inverts the current ruling.

# BANNED LANGUAGES
# Go -> use Rust
# Python -> use Julia or Rust

# CONTAINERS
# Runtime: Podman (never Docker)
# File: Containerfile (never Dockerfile)
# Base: cgr.dev/chainguard/wolfi-base:latest

# ABI/FFI STANDARD
# ABI definitions: Idris2 with dependent types (src/interface/abi/)
# FFI implementation: Zig with C ABI (src/interface/ffi/)
# Generated C headers: src/interface/generated/

# BUILD SYSTEM
# Use just (Justfile) for all build, test, lint, and format tasks.

# CODE STYLE
# Use descriptive variable names.
# Annotate and document all files.
# Add SPDX-License-Identifier headers to every source file.
10 changes: 6 additions & 4 deletions .devcontainer/Containerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} (hyperpolymath) <{{AUTHOR_EMAIL}}>
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
#
# Dev Container image for {{PROJECT_NAME}}
# Dev Container image for Dicta-Task
# Base: Chainguard Wolfi (minimal, supply-chain-secure)
# Build: podman build -t {{PROJECT_NAME}}-dev -f .devcontainer/Containerfile .
# Build: podman build -t Dicta-Task-dev -f .devcontainer/Containerfile .
# `:latest` suits a dev container (rebuilt daily); pin by digest
# (...@sha256:<digest>) if you need a reproducible dev environment.

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

Expand All @@ -24,7 +26,7 @@ RUN groupadd -g 1000 nonroot || true \
&& useradd -m -u 1000 -g 1000 -s /bin/bash nonroot || true

# Set workspace directory
WORKDIR /workspaces/{{PROJECT_NAME}}
WORKDIR /workspaces/Dicta-Task

# Default shell
ENV SHELL=/bin/bash
Expand Down
3 changes: 2 additions & 1 deletion .devcontainer/README.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// SPDX-License-Identifier: CC-BY-SA-4.0
// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
= Dev Container Usage
:author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>

Expand All @@ -24,4 +25,4 @@ This dev container uses `cgr.dev/chainguard/wolfi-base` with git, curl, bash, an

== Customization

Replace `Dictask` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.
Replace `Dicta-Task` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.
4 changes: 2 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// 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 dictask
// Dev Container configuration for Dicta-Task
// Works with: VS Code Dev Containers, GitHub Codespaces, Gitpod
// Container runtime: Podman (recommended) or any OCI-compliant runtime
{
"name": "dictask",
"name": "Dicta-Task",

"build": {
"dockerfile": "Containerfile",
Expand Down
95 changes: 85 additions & 10 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,34 +1,46 @@
# dictask - Editor Configuration
# SPDX-License-Identifier: MPL-2.0
# Hyperpolymath estate canonical .editorconfig (standards#343 phase 1)
# Canon lives in dicta-task; do not add a per-repo name to this header.
# https://editorconfig.org

root = true

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

# --- Prose: trailing whitespace is significant -----------------------------
[*.md]
trim_trailing_whitespace = false

[*.adoc]
trim_trailing_whitespace = false

# --- 4-space languages -----------------------------------------------------
[*.rs]
indent_size = 4

[*.ex]
indent_size = 2
[*.zig]
indent_size = 4

[*.exs]
indent_size = 2
[*.jl]
indent_size = 4

[*.zig]
[*.c]
indent_size = 4

[*.h]
indent_size = 4

[*.php]
indent_size = 4

# --- 3-space languages (Ada / GNAT house style) ----------------------------
[*.ada]
indent_size = 3

Expand All @@ -38,13 +50,17 @@ indent_size = 3
[*.ads]
indent_size = 3

[*.gpr]
indent_size = 3

# --- 2-space languages (explicit; matches the [*] default) -----------------
[*.hs]
indent_size = 2

[*.res]
[*.ex]
indent_size = 2

[*.resi]
[*.exs]
indent_size = 2

[*.ncl]
Expand All @@ -56,10 +72,69 @@ indent_size = 2
[*.scm]
indent_size = 2

[*.nix]
[*.idr]
indent_size = 2

[*.ipkg]
indent_size = 2

[*.k9]
indent_size = 2

[*.agda]
indent_size = 2

[*.lean]
indent_size = 2

[*.ebnf]
indent_size = 2

# --- Tab-mandatory formats -------------------------------------------------

# --- Task runners ----------------------------------------------------------
[Justfile]
indent_style = space
indent_size = 4

[*.just]
indent_style = space
indent_size = 4

[Mustfile]
indent_style = space
indent_size = 4

# --- Platform-mandated line endings ----------------------------------------
# Windows batch/PowerShell hosts require CRLF; keep in step with .gitattributes.
[*.bat]
end_of_line = crlf

[*.cmd]
end_of_line = crlf

[*.ps1]
end_of_line = crlf

# --- Legacy / retired toolchains (retained for byte hygiene only) ----------
# ReScript (LANGUAGE-POLICY 1.2) and Nix (retired 2026-06-01) are no longer
# adopted for new work. These sections are inert where the files are absent and
# keep surviving files from drifting. Removal is a per-repo judgement.

[*.a2ml]
indent_size = 2

[*.go]
indent_style = tab

[*.nix]
indent_size = 2

[*.res]
indent_size = 2

[*.resi]
indent_size = 2

[Makefile]
indent_style = tab
Loading