Repository navigation
Expand file tree
/
Copy path.cursorrules
More file actions
55 lines (45 loc) · 2.1 KB
/
Copy path.cursorrules
File metadata and controls
55 lines (45 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
# 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: {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
# STATE FILES
# No .a2ml file may exist anywhere: the format is retired. State, metadata,
# (neurosym) and (playbook) are clauses of the repo deed (*_chora.deed);
# the journal is docs/status/ROADMAP.adoc. Never recreate them as files.
# 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 RUNTIME — Bun first (standards/3-practice/LANGUAGE-POLICY.adoc sections 1.3-1.4)
# 1. Bun tier 1: package.json + bun.lock, run with bun / bunx
# 2. Deno tier 2: permitted; runs the same package.json scripts (deno task)
# 3. pnpm tier 3
# 4. npm last resort; permitted, never preferred; keeps no lock
# One package.json carries every runtime's lock (bun.lock, deno.lock,
# pnpm-lock.yaml); `js-runtimes regen` writes all three (owner ruling
# 2026-10-14). TypeScript and ReScript are banned; they migrate to
# AffineScript. Use plain JavaScript where JS is needed.
# 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.